< 返回版块

ggggjlgl 发表于 2024-04-03 11:59

  • 费了挺大功夫才把《Rust程序设计》啃下来,这次一定要把主力语言从Python转过来,至于什么时候换回去,还是PEP703落地了再说吧。
  • 求一个Rust上手项目,之前自己尝试用Rust+Slint写了一个工具箱,但是里面的需求全是自己编的伪需求,越写越没劲。
  • 最后给个自估实力作为参考:练气期二层。

评论区

写评论
rustdesk 2024-04-11 13:12

作为老程序员,年轻的时候多多少少都会有这些经历

--
👇
ggggjlgl: 我原来是比较实用主义那种,因为不是毕业就直接做了程序开发,一开始在DHL做空运操作来着,那时候最大的问题在于各种应用程序之间的数据搬运,完全的重复劳动。以前的空运海运DHL和K&N都是用logis,可以执行VB,那就自己开始写VB,后来接触Python就更喜欢Python。这时候写代码纯粹为了把自己从重复劳动里解放出来。

问题出在一个外包项目上,是一个通信行业基础设施的维护工具,用来帮助一线工程师排查问题的。源数据是很大的打点数据,几个G到十几个G不等,但是要把这些二进制数据按照一定规则映射成人类可读信息体积就膨胀好多,想了好多办法去优化这个翻译过程。GIL真的没办法就只能开多进程,然后CPU起飞也没能达到时间要求。再然后就只能让组内其他同事用C++重写了然后用Python去调。

然后我的心态就裂开了,就开始不断尝试新语言,尤其是新世纪以来出现的语言,因为这些语言出现的背景里就有多核心硬件的发展。再后来就执着于此了。

其实比起给项目写代码,我更喜欢给自己写工具,只要一个操作需要反复做几遍就开始想着加到工具箱里,做这些工具Python无敌,用现在的Rust GUI框架纯折磨自己。

rustdesk: 顺序搞反了,有项目需要用rust,不是学rust搞项目

作者 ggggjlgl 2024-04-10 16:30

我原来是比较实用主义那种,因为不是毕业就直接做了程序开发,一开始在DHL做空运操作来着,那时候最大的问题在于各种应用程序之间的数据搬运,完全的重复劳动。以前的空运海运DHL和K&N都是用logis,可以执行VB,那就自己开始写VB,后来接触Python就更喜欢Python。这时候写代码纯粹为了把自己从重复劳动里解放出来。

问题出在一个外包项目上,是一个通信行业基础设施的维护工具,用来帮助一线工程师排查问题的。源数据是很大的打点数据,几个G到十几个G不等,但是要把这些二进制数据按照一定规则映射成人类可读信息体积就膨胀好多,想了好多办法去优化这个翻译过程。GIL真的没办法就只能开多进程,然后CPU起飞也没能达到时间要求。再然后就只能让组内其他同事用C++重写了然后用Python去调。

然后我的心态就裂开了,就开始不断尝试新语言,尤其是新世纪以来出现的语言,因为这些语言出现的背景里就有多核心硬件的发展。再后来就执着于此了。

其实比起给项目写代码,我更喜欢给自己写工具,只要一个操作需要反复做几遍就开始想着加到工具箱里,做这些工具Python无敌,用现在的Rust GUI框架纯折磨自己。

rustdesk: 顺序搞反了,有项目需要用rust,不是学rust搞项目

rustdesk 2024-04-09 13:55

顺序搞反了,有项目需要用rust,不是学rust搞项目

miaoyc666 2024-04-07 18:53

关注,我都上手了n年还没正式上手,在这期间把go学会用上了😂

作者 ggggjlgl 2024-04-04 07:28

谢谢提醒。我原来还想着把pypi中已经有的而crates没有的库搬过来一些的,现在想确实还可以反着玩。

JackySu: 你是Python转过来就试试Maturin+PyO3 模仿orjson写一些序列化库 pydantic那种schema validation库也行 本身Rust重头戏就在于工具链重构 把你以前的需求底层所涉及到的轮子自己试着造一造 再想着继续做点别的什么 比如写个青春版操作系统和Linux驱动

作者 ggggjlgl 2024-04-04 07:08

谢谢回复。不会硬搬框架中的设计模式的,只是想学一下一种语言中的惯用的一些技巧(比如刚入门Python时我看到好多源码里会写return exp or exp这种利用短路的,框架里用得到处都是但自己却不知道),有些巧妙的处理实际利用了一些不起眼的特性,能帮助入门新语言的人从理解这个特性到会用。设计模式这东西只有在管理代码的时候才会用到,如果可以预见不会影响维护成本没必要硬上设计模式,毕竟代码给人看的,怎么抽象上去到了编译器这怎么单态化回来。

AnkoGo123: 怎么简单怎么来就行,如果你试图通过阅读框架的代码来学习如何写业务代码,那你就大错特错了,因为他俩几乎设计模式完全不同,业务代码怎么简单容易理解,容易写,就怎么来就行,千万不要代码未写,模式先上,写业务代码几乎不需要什么设计模式这一套,设计模式是后来居上的,而不是先行的,所以是必须用模式才用上,而不是接口,模式,各种算法等等的一股脑安排上,利用go的设计理念:less is more,千万不要觉得more is less。

JackySu 2024-04-04 06:47

你是Python转过来就试试Maturin+PyO3 模仿orjson写一些序列化库 pydantic那种schema validation库也行 本身Rust重头戏就在于工具链重构 把你以前的需求底层所涉及到的轮子自己试着造一造 再想着继续做点别的什么 比如写个青春版操作系统和Linux驱动

ankoGo 2024-04-03 23:14

怎么简单怎么来就行,如果你试图通过阅读框架的代码来学习如何写业务代码,那你就大错特错了,因为他俩几乎设计模式完全不同,业务代码怎么简单容易理解,容易写,就怎么来就行,千万不要代码未写,模式先上,写业务代码几乎不需要什么设计模式这一套,设计模式是后来居上的,而不是先行的,所以是必须用模式才用上,而不是接口,模式,各种算法等等的一股脑安排上,利用go的设计理念:less is more,千万不要觉得more is less。

作者 ggggjlgl 2024-04-03 21:53

替大家试了一下,回复评论时可以使用markdown语法引用被回复的评论,但是保持自己的评论没有格式就好,不要像我一样加粗字体,否则视觉上可能会让读的人比较累(这可能是回复和被回复的评论的颜色深浅对比较大造成的)。

作者 ggggjlgl 2024-04-03 21:45

谢谢你的回复。我尝试开始读这个项目。

taoistwar: 学下tokio, 看看 mini-redis

作者 ggggjlgl 2024-04-03 21:38

谢谢你的回复。生命周期自己确实没理解到位,尝试封装公共逻辑时很容易因为生命周期被编译器“帮助”。至于智能指针,除了引用、一定要确定大小的地方和防止自动copy的地方我也很少主动用。我从被Python的GIL整自闭了之后到现在确定Rust,中间大概有一年的时间尝试了Golang和C++,最可惜的是Golang,几乎可以用gin实现公司内部一个办公流了,最后还是选了Python+fastapi。跑的最快的一次就是C++,只用了两个月,那时候我刚补完关于计算机基础和内存的一些东西,C++还没到多线程,一个快十年的C++程序员告诉我(C++是用来学的,不是用来精通的)的时候,就果断闪了。感觉我换主力语言的过程中如果不能一鼓作气,就只能等着荒废了。而且根据我在Python中的经验,自己写业务的代码和读框架时的源码好像根本不是一种东西。我还是想看看那些正儿八经(至少来自结丹期以上大佬)的代码才能真正搞明白这些玩意怎么随手用出来。

AnkoGo123: 个人觉得你最好先去学习下多线程以及标准库等等并发相关的概念,并不建议你直接就入手rust,其实即使你看完这本书,也绝对还没入门,因为我看过的书籍包裹官网的书籍不止3本,然后还加上我的一堆test demo实践,以及浏览众多的公众号文章,我才好不容易从go转rust成功,且还没完全理解rust的标准库和一些边角概念,不过好在理解了rust最重要的几个概念:所有权,生命周期以及智能指针,其他的概念包括标准库以及几乎所有的类型都跟go差不多,不过我没怎么认真的去学习,前前后后偶尔看看,跨越几年时间,我觉得你绝对还没完全理解rust中的所有权,生命周期以及智能指针

taoistwar 2024-04-03 19:12

学下tokio, 看看 mini-redis

ankoGo 2024-04-03 18:53

个人觉得你最好先去学习下多线程以及标准库等等并发相关的概念,并不建议你直接就入手rust,其实即使你看完这本书,也绝对还没入门,因为我看过的书籍包裹官网的书籍不止3本,然后还加上我的一堆test demo实践,以及浏览众多的公众号文章,我才好不容易从go转rust成功,且还没完全理解rust的标准库和一些边角概念,不过好在理解了rust最重要的几个概念:所有权,生命周期以及智能指针,其他的概念包括标准库以及几乎所有的类型都跟go差不多,不过我没怎么认真的去学习,前前后后偶尔看看,跨越几年时间,我觉得你绝对还没完全理解rust中的所有权,生命周期以及智能指针

1 共 13 条评论, 1 页