搜索
bottom↓
12
返回列表 发新帖
楼主: redworlf007

请教下用go语言,写程序的大神们一些问题,谢谢。

  [复制链接]

出0入0汤圆

发表于 2020-2-14 22:38:39 | 显示全部楼层
redworlf007 发表于 2020-2-14 20:38
Python2.7的解释器,编译完放到板子上,40M占地面积,我也不知道里面都包含了啥。

你想想用Python写应用 ...


写Python先求快,出产品.  不过python的确写的很快,就是弱类型在出错时比较坑,如果测试没覆盖到会崩.
学过后,一直没场合应用,基本当个工具.

出0入0汤圆

发表于 2020-2-14 22:49:36 | 显示全部楼层
看来GO语言挺火的啊,这么多大神讨论。

出0入12汤圆

发表于 2020-2-18 22:36:14 | 显示全部楼层
我的选择:有界面,QT 或者 C,无界面 C,Qt,Go 或者 Rust。资源丰富就尽量不用 C,操作有特定时序要求的就不用 Go,rust 用起来还没有那么方便,不过前途不错。

出0入0汤圆

发表于 2020-2-19 10:02:52 | 显示全部楼层
abutter 发表于 2020-2-18 22:36
我的选择:有界面,QT 或者 C,无界面 C,Qt,Go 或者 Rust。资源丰富就尽量不用 C,操作有特定时序要求的 ...

可以对Qt和Go做一个比较吗

出0入12汤圆

发表于 2020-2-19 10:27:13 | 显示全部楼层
Baldwin 发表于 2020-2-19 10:02
可以对Qt和Go做一个比较吗

Qt 和 Go 不是一个层面的概念。Qt 可以理解成封装好,自带很多库和 framework 的 C++,Go 是一个开发语言,库比较丰富。

如果你资源紧张,Qt 对 RAM 的需求通常会低于 Go,对存储的等于或者高于 Go,主要是 C++ 本身类似于 C,需要开发者管理内存,而 Go 帮助开发者管理。

如果你有开发 GUI 的需求,那么毫无疑问,Qt 是最好的选择。如果没有 GUI 需求,RAM 和 ROM 资源充足,没有特别的性能优化需求和实时性需求,我建议优选 Go,毕竟开发效率更高一些。

基本上,从资源排序上 C < Qt/C++ <= Go,从底层需求关联度上也是 C < Qt/C++ < Go

出0入0汤圆

发表于 2020-2-19 10:57:11 | 显示全部楼层
abutter 发表于 2020-2-19 10:27
Qt 和 Go 不是一个层面的概念。Qt 可以理解成封装好,自带很多库和 framework 的 C++,Go 是一个开发语言 ...

请问下有了解PyQt吗?pyqt比C++的qt性能上差多少呢,目前懂些Python,想学下UI

出0入0汤圆

发表于 2020-2-19 14:30:07 | 显示全部楼层
abutter 发表于 2020-2-19 10:27
Qt 和 Go 不是一个层面的概念。Qt 可以理解成封装好,自带很多库和 framework 的 C++,Go 是一个开发语言 ...

谢谢你的解答,我也简单阐述一下我的观点,
Qt是基于c++的框架,它实现了很多c++的库,这样方便用户去使用,随着Qt这么多年的演变,它也形成了属于Qt的一套独有的学习路径,我的理解是Qt是对C++的继承,哈哈!
对于go的话,网上说它是21世纪的c++,它解决了内存手动释放的难点,用户只管申请,不用管理释放,大大降低了难度;
我在想,后面会不会出现GoQt

出0入12汤圆

发表于 2020-2-19 18:49:27 | 显示全部楼层
Baldwin 发表于 2020-2-19 14:30
谢谢你的解答,我也简单阐述一下我的观点,
Qt是基于c++的框架,它实现了很多c++的库,这样方便用户去使 ...

我觉得 Go 应该是跟 Python 竞争的,:)

出0入12汤圆

发表于 2020-2-19 18:50:49 | 显示全部楼层
lghtjpu 发表于 2020-2-19 10:57
请问下有了解PyQt吗?pyqt比C++的qt性能上差多少呢,目前懂些Python,想学下UI

大多数的项目里面,成本是考量对象, 跟快速原型或者玩具不一样,Python 和 PyQt 就不会是首选。

出0入0汤圆

发表于 2020-2-19 21:48:01 | 显示全部楼层
abutter 发表于 2020-2-19 18:50
大多数的项目里面,成本是考量对象, 跟快速原型或者玩具不一样,Python 和 PyQt 就不会是首选。 ...

不过人力成本也是很大一部分呀,如果用py可以提高开发效率也会节省的呀

出0入0汤圆

发表于 2020-2-19 23:16:18 | 显示全部楼层
abutter 发表于 2020-2-19 18:49
我觉得 Go 应该是跟 Python 竞争的,:)

go是强类型,和Python差别太大,目标市场就不一样。go应该是替换C/C++

出0入36汤圆

 楼主| 发表于 2020-2-20 03:14:53 来自手机 | 显示全部楼层
lghtjpu 发表于 2020-2-19 21:48
不过人力成本也是很大一部分呀,如果用py可以提高开发效率也会节省的呀

其实熟练的话人力成本差不了多少,很多程序员水平不行,性能靠硬件来凑,当然用Python省事。

出0入12汤圆

发表于 2020-2-20 08:02:23 | 显示全部楼层
nanfang2000 发表于 2020-2-19 23:16
go是强类型,和Python差别太大,目标市场就不一样。go应该是替换C/C++

Go 基本上替换不了 C;据我所见,会影响一些 C++ 的份额,不过不会多。

出0入0汤圆

发表于 2020-2-20 11:38:27 | 显示全部楼层
redworlf007 发表于 2020-2-20 03:14
其实熟练的话人力成本差不了多少,很多程序员水平不行,性能靠硬件来凑,当然用Python省事。 ...

照你这么说就不会有高级语言的出现了,很多应用,比如大型系统或者网页,不可能拿直接c去写的。“熟练的话人力成本差不了多少”这就是伪命题,一个非常资深的C程序员太难得了,而批量的高级语言程序员却很好培养。
高级语言自然有高级的用法和技巧,那时候高级设计模式的应用技巧不是搞单片机的人能想的,高端架构师就是干这个的。
我从单片机汇编一直涉猎到C/C++,Python,网页前端JS,深感各种语言的好处。应用场景不同,各有大用处,牺牲硬件换取开发难度和维护难度的下降,这是非常合理的策略,不用鄙视别人。高级语言的生态复用也会很好,平台相关性低
比如我们公司用Python写的编译系统,AI训练,机器人自动测试,应用非常之广。

我还用Python做单片机上的GUI,这个也不是玩具,将来可能商用。

你可以去看看React和Vue这些框架,研究下如果用Go或者C这种静态语言实现会怎么样

出0入36汤圆

 楼主| 发表于 2020-2-20 12:30:13 | 显示全部楼层
nanfang2000 发表于 2020-2-20 11:38
照你这么说就不会有高级语言的出现了,很多应用,比如大型系统或者网页,不可能拿直接c去写的。“熟练的 ...

我说的是嵌入式上啊,在资源有限的情况下,如果资源海量,那根本不用讨论这个问题。

嵌入式要考虑成本、要考虑运行速度、要考虑资源非常有限,这种情况下,还要上比较高级的语言,还要上各种大型框架,这种明显就不合适。

我见过很多程序员,在arm9这种片子,搞几个串口应用,要用Python,还要上Python的框架,写个配置功能,要用lua,还有程序要不停的写日志,5M的应用程序,写的运行日志能有300M,惨不忍睹啊。

出0入0汤圆

发表于 2020-2-20 15:10:17 | 显示全部楼层
redworlf007 发表于 2020-2-20 12:30
我说的是嵌入式上啊,在资源有限的情况下,如果资源海量,那根本不用讨论这个问题。

嵌入式要考虑成本、 ...

我觉得没问题,不是所有嵌入式都资源紧张,上了ARM9,上了Linux,还用C从头写轮子,这才是浪费。用现有技术,一是省时间成本二是bug少,三是未来可以升级可以做更强的功能。
如果买个70块钱的Linux板子跑脚本、网页可以解决问题,就不要用STM32加SDRAM加网口芯片去实现
未来的趋势是硬件不值钱,软件和人力更值钱

出0入36汤圆

 楼主| 发表于 2020-2-20 15:20:35 | 显示全部楼层
nanfang2000 发表于 2020-2-20 15:10
我觉得没问题,不是所有嵌入式都资源紧张,上了ARM9,上了Linux,还用C从头写轮子,这才是浪费。用现有技 ...

我现在就是arm9 300M主频  64M ddr  512M的flash,Linux系统,可是跑Python启动慢啊,运行也慢,而且要先移植Python上去,Python解释器就要占40M的空间,文件系统一共70M,70M的文件系统,启动加载慢的很。

Python很多库,还要移植过去,这个也费事。

Python要调用C的有些api,还得再把C封装,有的还得再调用C库才行,1024个字节的抑或运算,不调用C库,要4秒才能算完。。。

这种折腾下来,感觉不划算,大把的时间花在倒腾Python上了,比用C写花的时间还长。


每次Linux系统启动后,等Python启动,要好一会了,设备重启后,不能很快工作。。。

出0入36汤圆

 楼主| 发表于 2020-2-20 15:25:19 | 显示全部楼层
nanfang2000 发表于 2020-2-20 15:10
我觉得没问题,不是所有嵌入式都资源紧张,上了ARM9,上了Linux,还用C从头写轮子,这才是浪费。用现有技 ...

还有,用了arm+Linux,开发是好做多了,可是遇到另外一个问题,就是Linux系统启动就要10多秒,文件系统越大,启动时间越长,有时候干扰重启,或者其他原因重启,客户就在骂,启动慢。。。比如那个加油机重启后,十几秒二十秒启动,被骂的不行。。。

软件不想做裸机开发。。。我只能这么将就了。。。

出0入0汤圆

发表于 2020-2-20 15:32:03 | 显示全部楼层
redworlf007 发表于 2020-2-20 15:20
我现在就是arm9 300M主频  64M ddr  512M的flash,Linux系统,可是跑Python启动慢啊,运行也慢,而且要先 ...

我是600MHz F1C200S,编出来20多MB的Python3,文件系统总共50多MB吧。文件系统并不会影响启动时间吧,我是ext4的文件系统在SDNAND上,估计你是spi nor所以慢。
不算uboot启动到shell是1.8秒
Python启动大概1秒多。我用的buildroot,基本常用库都有,不用自己移植

关键程序我用Cython做了编译,基本达到C的速度,其他速度不敏感的部分不做优化也没什么感觉,还是爽歪歪的。

建议你用C库或者Cython优化一下。你的硬件确实是慢了点
另外写Python也是得注意写法的,有的写法会慢很多

出0入36汤圆

 楼主| 发表于 2020-2-20 15:46:47 | 显示全部楼层
nanfang2000 发表于 2020-2-20 15:32
我是600MHz F1C200S,编出来20多MB的Python3,文件系统总共50多MB吧。文件系统并不会影响启动时间吧,我 ...

我用的并口nand,yaffs2的文件系统,文件系统越大,启动的时候那个挂载速度就越慢。。。。
Python没有编译,软件说啥问题没搞好,具体我也不清楚。

所以最近我在看go语言,看看嵌入式上用go做应用,是不是开发效率会高很多,然后占用资源会比Python少很多,但我发现这种高级语言,对硬件的操作不是很方便,没有C操作硬件那么暴力。。。

出0入0汤圆

发表于 2020-2-20 15:51:30 | 显示全部楼层
有人用qt的库来开发也很方便,core,network,支持很全面,即使不用它的UI部分,其它部分也非常好用。几个MB应该就够了

出0入36汤圆

 楼主| 发表于 2020-2-20 16:08:00 | 显示全部楼层
nanfang2000 发表于 2020-2-20 15:51
有人用qt的库来开发也很方便,core,network,支持很全面,即使不用它的UI部分,其它部分也非常好用。几个M ...

是的啊,所以我最近又用buildroot把qt5移植上去了,Linux上用qt c++开发,这样貌似也省资源,我有个疑问,你们在嵌入式上咋找bug的?我们软件在疯狂的写程序运行的各种日志,5m的应用程序,我给他专门搞了一个512M的sd nand,用来写日志,写满了覆盖。。。每秒N多条日志写进去,问他具体每秒写多少数据量,他说不知道,反正在写,这么玩下去,nand会被玩坏的。。。

出0入0汤圆

发表于 2020-2-20 16:40:44 | 显示全部楼层
redworlf007 发表于 2020-2-20 16:08
是的啊,所以我最近又用buildroot把qt5移植上去了,Linux上用qt c++开发,这样貌似也省资源,我有个疑问 ...

简单bug一般也是看log。具体一段程序需要debug的话,就加一点debug代码把所有的输入输出都存下来,然后把这段程序在PC机上用VS编译,导入真机上的数据单步运行
调试好了就把所有debug代码和log都屏蔽

出0入0汤圆

发表于 2020-2-20 22:32:26 | 显示全部楼层
redworlf007 发表于 2020-2-20 15:46
我用的并口nand,yaffs2的文件系统,文件系统越大,启动的时候那个挂载速度就越慢。。。。
Python没有编 ...

对硬件操作不是很方便指的是哪部分呢

出0入36汤圆

 楼主| 发表于 2020-2-21 00:24:18 来自手机 | 显示全部楼层
Baldwin 发表于 2020-2-20 22:32
对硬件操作不是很方便指的是哪部分呢

go我搞了下串口,那个串口设置奇偶校验得去找其他的库,单独控制流控引脚输出高或者低,我还没找到咋搞。

出0入0汤圆

发表于 2020-2-21 08:43:15 | 显示全部楼层
想看看,但是学不动了。

出0入12汤圆

发表于 2020-2-21 09:04:27 | 显示全部楼层
资源紧张的情况看看 OpenWrt 好不好移植。

出0入0汤圆

发表于 2020-2-21 09:14:08 来自手机 | 显示全部楼层
abutter 发表于 2020-2-21 09:04
资源紧张的情况看看 OpenWrt 好不好移植。

qt比go还省资源??   这还真没了解过,我有用openwrt,16m rom,64m ram,采h5+go,消耗5m rom,10m ram,qt无gui也能做到?

出0入12汤圆

发表于 2020-2-21 09:24:31 | 显示全部楼层
5M 是被压缩过的还是原始大小,Qt 无 GUI 比较省空间和内存。

出0入0汤圆

发表于 2020-2-21 09:37:50 | 显示全部楼层
abutter 发表于 2020-2-21 09:24
5M 是被压缩过的还是原始大小,Qt 无 GUI 比较省空间和内存。

没想到啊。qt无gui这么小资源。我这个upx压缩过了,确切是原9.7m,upx后4.1m。
upx压过qt的220m的,最后只有69m

出0入12汤圆

发表于 2020-2-21 09:45:12 | 显示全部楼层
我能问你下你 64MB 的空间做啥应用吗?一般 64MB 都是 SRAM,DDR2 都 256MB 起跳。

出0入0汤圆

发表于 2020-2-21 09:54:16 | 显示全部楼层
abutter 发表于 2020-2-21 09:45
我能问你下你 64MB 的空间做啥应用吗?一般 64MB 都是 SRAM,DDR2 都 256MB 起跳。 ...

电力行业,做规约转换器

出0入0汤圆

发表于 2020-2-21 10:30:06 | 显示全部楼层
slzm40 发表于 2020-2-21 09:14
qt比go还省资源??   这还真没了解过,我有用openwrt,16m rom,64m ram,采h5+go,消耗5m rom,10m ram, ...

H5是什么?

出0入0汤圆

发表于 2020-2-21 10:48:56 | 显示全部楼层

html5,网页

出0入0汤圆

发表于 2020-2-21 12:07:09 | 显示全部楼层
本帖最后由 chinaye2 于 2020-2-21 12:08 编辑
slzm40 发表于 2020-2-11 21:07
我是给电力做的,主要也是规约协议转换, 很多定制的. 具体协议层面还是得自己实现啊.
你这个 ...


如何屏蔽底层差异,扩展下行物理通信链路,兼容更多协议型号,通过远程配置解决工程化提高效率,中间数据层抽象解决采集存入,和取出转发,可扩展、工程化

出0入0汤圆

发表于 2020-2-21 22:09:56 | 显示全部楼层
chinaye2 发表于 2020-2-21 12:07
如何屏蔽底层差异,扩展下行物理通信链路,兼容更多协议型号,通过远程配置解决工程化提高效率,中间数据 ...

可以采用脚本驱动的方式,比如用和设备通信采用脚本编程,这样会比较灵活

出0入0汤圆

发表于 2020-2-21 22:46:44 | 显示全部楼层
aozima 发表于 2020-2-9 19:43
支持,在学习rust中。

rust能怎么个用法啊

出0入0汤圆

发表于 2020-2-24 22:23:58 | 显示全部楼层
redworlf007 发表于 2020-2-20 16:08
是的啊,所以我最近又用buildroot把qt5移植上去了,Linux上用qt c++开发,这样貌似也省资源,我有个疑问 ...

哥们,请教下arm Linux突然断电导致系统挂了,你们通常是怎么处理的

出0入36汤圆

 楼主| 发表于 2020-2-24 23:49:59 来自手机 | 显示全部楼层
KunShan_a_dai 发表于 2020-2-24 22:23
哥们,请教下arm Linux突然断电导致系统挂了,你们通常是怎么处理的

我用并口的nand或者sd nand,基本不会出现这个问题,如果还要做的更好,那你得硬件上加大电源电容,同时做个掉电的io中断驱动,发生掉电停止写flash。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 09:09

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表