年近三十,目前工作是事业单位会计,平时用不到编程。
但对编程感兴趣,高中时游戏玩烦了,自学做网站,会一点html、php,高中毕业几年后,靠做网站带来过收入,十几万吧,纯兴趣变成了半职业,然而好景不长,因为一度工作太忙、不够用心,给耽误了,这四五年逐渐就没再动,以前做网站主要靠的是cms和seo,php属于没入门水平,就能弄个记事本。
现在社会发展太快,自己也还有点兴趣,想利用工作闲暇把一门语言学好,一方面满足兴趣,更重要的是以备不时之需要,或许将来能派上用场,不知应该学习什么语言?
回复内容:
事业单位会计……
你知道以前(大约2000年)事业单位会计都学什么吗?
Visual FoxPro
以前没有那么多、那么强的相关软件,很多时候还得针对需求写一些自动处理的脚本,Visual FoxPro挺好的,用SQL语句,直观,反馈及时,在当时也算能大幅提高工作效率了(当时的xls可以轻松导入进去)。
以下个人观点:
面向潜在的工作需要:Excel中的VBA(大幅减少重复性劳动的工具)、Visual FoxPro(低优先级,毕竟太老了,虽然很难说有没有什么老数据需要用这个来处理)
面向自己的兴趣爱好:这个什么都有可能的,学Python写爬虫,折腾一下树莓派做个聪明的控制器,搞个手机上的小程序方便自己,折腾一个博客来记录,等等等等,重点是,自己有兴趣+有个愿意学习的心。
会计,我怎么感觉excel的vba用顺溜了能大大加速你们的日常工作呢
重复三次以上的操作写代码去做,看看你的工作中有多少内容是可以写代码做的
学习Python 或golang。
做网站前端还是老三样吧,html, css, javascript.
然后 python.
为什么先学 python. 因为它的模块成熟,“见效快”。
差不多了,如果还想往"底层"探索,就 C 了。不要被 C++ 拐走了,那个学一下当娱乐消遣没什么问题,但是坑大。
C 的“模块”,“根基”也很成熟... 不过一般来说学 C 的话,“见效不快”。因为 C 的“根基”就是操作系统内核。C 的 "API" 基本上来说就是系统调用(就是说,《Unix 环境高级编程》)。到这里了,多少也要能看懂 C 编译器吐出来的汇编是怎么回事儿。然后联系操作系统内核、编译器、二进制工具等等,搞清楚这些“底层”玩意儿大概怎么工作的(是指,《程序员的自我修养》,《深入理解计算机系统》,《Linux设备驱动程序》,《Linux内核设计与实现》,《深入理解Linux内核》,《深入Linux内核构架》......)。这样 C 的坑其实是非常大的(不要让 C++ 拐走就是这个意思,C 的哲学是 -- 东西基本都是干货,只要你还能啃... C++么,则未必如是了,与其把时间浪费在 C++ 那些奇淫机巧上,不如啃点儿干货算了)...,因为如果读内核源码的话,需要 Makefile, shell script, linker script, asm 都要懂,硬件构架之类的当然也要懂点儿,不过不紧要,反正写内核的书上多少会提及,然后自己去查相关知识点就行了,就是个时间问题。
还有,数据结构和算法的基础当然也要在这个地方打下来,数据结构至少能写(抄也一样)查找二叉树,红黑树,能构建图,算法的话基本排序归并排序快速排序,排列组合生成,DFS BFS 这些基本搜索要会。
C 是见效不快。一般来说,一时半会儿肯定不会写网络爬虫什么的。然而,... 或许这一切都是值得的。
把 C 的递归搞清楚。函数栈帧怎么建立怎么销毁的,翻译成汇编码是怎样的,怎样把任意递归转化为栈结构 + 循环不变式。然后要能够推论出这样一个结论:任意循环都可以用递归表达,但递归不能通过不带栈结构的循环来表达 -- 也就是说,递归拥有比(不带栈结构的)循环更强的计算能力,实际上递归函数的计算能力等价于图灵机。到了这里 -- 传统上来说,已经登堂入室计算机科学/艺术之门了。
入门之后就随便玩儿了。
可以先写一个解释器来玩。这个要备一点儿自动机的基础理论知识(《自动机理论、语言和计算导论》),然后随便找一本编译书籍(《编译原理》)来看,一本不够的话加几本(《编译原理及其实践》,《编译器构造》),大概囫囵吞枣过一遍。再找一本教你写解释器的书来看,比如《自制编程语言》什么的。然后抄。抄完了再看编译原理,再抄。大概这样。
这意味着,你可以自己发明一门计算机语言了,虽然可能品味不佳,或者实现不好,但是,你确实能够写一门足够复杂的计算机语言了。
然后再随便玩儿。
比如 Lisp 系的,建议先玩 scheme.
Prolog, Haskell, Ruby, io, Erlang,... 有空了都玩玩吧。
反正这个时候学任何语言,一般来说花不了多少时间。如果只是要上手用,其实这个时候任何语言都是不用学的,临时学一下,模仿下风格,就基本能写得像模像样了。就是说这是真的玩儿。
反正你自己都能写语言了。这个时候,是培养“品位”。
然后再随便玩儿,比如内核来说,其实并不精通,但是反正要找的话也能找到代码在哪;编译理论里面的某个东西某段代码其实可以写得更加通用或者更加精炼;某个数据结构和算法实现比较有意思,想想怎么写,对比一下别人怎么写的... 大约就是干这种事情吧。
唉,其实还是怎么玩儿都不够的。到了这 level, 不能说很低了,但估计也没多高。未知还是那么多。不过,人生的乐趣,或许正在于此。
我建议python
不建议学习php、java、python、javasript这样的语言, 不是说这些语言不好, 你如果要去找专门的软件工程师职位的工作, 那学习这些语言都是不二的选择,用这些语言的公司多啊,工作好找。
然而, 题主是个会计,学编程主要是因为兴趣和实际对工作的帮助 ,所以我建议是去学习windows
系统下的.net技术体系,和.net平台下的首选语言c#
为什么学习.net平台和c#
题主说了学编程的原因其中一点是因为兴趣。 即然是兴趣, 那可以不考虑就业, 应该学习最酷的和功能最强大的语言,显然,c#是不二之选 。现在软件开发行业内这么多编程语言, 要说找出一种语法最炫酷、最便捷、功能最强大的语言, 那是非c#莫属了。
当然, 现在的一些函数式编程语言, 语法方面可以碾压c#, 但是我觉得那东西真的不适合非专业的玩家拿来把玩,学习函数式编程语言的难度要比学习普通编程语言来的大, 还不如用这些精力把简单的东西玩精呢,毕竟非程序员的主要工作不是编程。不过,如果对函数式编程有兴趣, .net平台下的 f#也是一个不错的选择。
第二点是要能派上用场。题主已经三十岁了, 在会计这个职业上已耕耘多年, 相信转行再去当程序员已经是不可能的了。 那也就是说不必去学那些IT行业里流行最火热的语言了。 而是要挑实用的学, 毫无疑问,c# 是还是首选 。用微软的技术开发软件有一个特点,就算在不同平台上, 编程的理念也是一致的, 换句话说就是, 假如你学会了用c#开发网站, 那么你可以非常顺利的过渡到用c#开发windows客户端应用程序、windows10 uwp应用(包括windows
phone)、windows shell脚本,更不可思议的是,你还可以用c#开发android、ios应用,这简直就是一朝鲜吃遍天啊, 一种语言覆盖全平台, 问世间除微软的.net和c#还有谁能做的到?只要学会.net和c#, 以后想开发什么软件就开发什么软件,装逼工作两不误。
不可否认, 在库数量方面python和java是可能比.net来的多一些, 然而, 绝对大部库.net都是默认提供的,也足够开发任何想的到的功能了, 至少我写了很多年的.net 程序,从没碰到库不够用的问题。 而且 python和java库的最大的问题就是版本问题,我在使用python和java的过程中碰到的最多的问题的, 网上下载的库的版本和本地装的运行环境不一致, 导致各种莫名其秒让人抓狂的错误, 这些问题在.net中是碰不到的。此外,.net的文档也很齐全,不管是多么犄角旮旯的东西,在msdn上都有记录。
还有一个就是开发环境的问题, 如果用别的语言开发程序,必须要安装一堆如运行环境、IDE、服务器之类的东西,还需要各种配置,对专业程序员来说这没什么, 虽然题主不是小白, 但是搞这些东西还是花你不少精力。然而, .net的安装环境却是逆天的人性化,一个安装包, 点点鼠标,所有一切需要用到的东西都会帮你准备就绪, 只需要拿来用就可以了。 况且,学习别的语言, 往往还需要学点linux的使用方法, 这对非专业从业人员来说也是附加的压力, 如果学习使用.net和c#的话就完全没有这方面的顾虑了,windows server的使用和windows pc的使用无差。
最后,写代码也讲究体验啊,敲代码也要敲的带劲啊,因此,用什么IDE是很重要的。如果给市面上的IDE搞个华山论剑,那天下第一非微软家的 visual studio莫属不可,使用vs编码加调试的那个爽,是其它IDE难以望其项背的。
所以,不要纠结犹豫了,赶紧动手学习.net和c#
我不是来抬杠的...我建议学英语...
我现在在写Python代码,其实真不该多推荐给你的,用什么语言更多是自己的事。
如果你会PHP,还是继续PHP比较合适啊。
喜欢底层就学C啦,汇编啦。买块单片机开发版,买几本电路设计的书,买些元器件,电烙铁,示波器,就可以做些小玩意儿了。(注意安全)
高级一点的学函数式编程啦,比如scheme啦,haskell啦。学好了之后就可以混进函数式爱好者的高端圈子啦。
实用一点学js啦,py啦。做网站,写爬虫足够啦。
实在想不通的去学C++吧