想做副业,学编程,学哪种语言比较好?(零基础)
最近有很多同学问我,我是一个零基础的小白,到底学习哪一种语言比较好?作为一个写了十年代码程序员,用过七种语言的我来说,必须要强调一下,语言只是一种工具,当你真正理解了要做的事,选一个顺手的就行。跟工具一样,哪天有新的好用的语言出来,把旧的扔掉就好。
我今天写这篇文章的目的是想给大家一个参考。
决定用什么语言的因素有有很多,比如性能,内存占用,开发难度,运维难度,目标平台,可执行文件大小,代码可维护性,项目周期,项目规模,招聘难度,团队构成,历史遗留问题,甚至派系斗争等。
比如腾讯就有大量历史遗留的C和C++的服务器代码,毕竟20年前没得选。又比如空降技术负责人可能会为了让自己人上位,让自己团队出成绩,选择用其他语言或者框架对本来工作良好的系统进行重构。
下面开始聊语言
Python
先说python,是因为这个语言小学生都开始学习了,以后不会python要被小学生欺负了。语法简单,除了前端几乎万能,可用的库极其丰富,能想到的功能几乎都有现成的库可以用。不管是搞爬虫,做人工智能,机器学习,数据分析,还是自动化运维,自动化测试,python几乎都是首选。不想当程序员还想学习一门语言的话,学习python就没错了。缺点是慢,但是能让机器累的事,何必让人来累。
PHP是世界上最好的语言,可能这个已经成为很多程序员的梗。
我没用php开发过大型项目,自己做东西的感觉是这语言非常简单,以前用的人很多,招聘容易,但是不适合做复杂的项目。现在用得越来越少了,迅雷以前有不少运营活动页面是PHP做的。
C的语法足够简单,应该是最接近机器语言的高级语言,适合编写操作系统底层,驱动程序,硬件相关的程序以及看重性能的程序。由于过于简单,构建大型程序的复杂度非常高,建议想往研发方向走的同学都学习一下C语言。
可以对计算机一些底层原理了解,比如指令执行过程,内存管理,异常,多线程,编译过程等又更深层次的了解。掌握C语言再学习其他语言会变得很轻松,学习破解也有帮助,毕竟汇编基本都可以反编译出C代码。
C++是一个糟糕的语言,这不是我说的,这是Linux之父说的。我自己用C++四五年时间,越到后面就感觉这句话越有道理。
首先C++的强大是毋庸置疑的,但是作为一个跟C一样偏底层的语言,如果不理解写的代码背后到底发生了什么事,如果出了错,你是永远不可能知道错在哪里的。
一个没有垃圾回收的语言,不用智能指针很容易导致内存泄漏,错误的用了智能指针不但内存泄漏之后不好解决,还容易导致提前释放等问题。
C++支持强制类型转换,如果转换前后的内存结构不一样,很有可能导致各种隐性问题。还有Java之类非原生语言的异常处理都是语言自定义的异常,而C和C++中的异常很多都是操作系统层的异常。
Windows下一个简单的trycatch,你觉得可以抓到try中所有的异常,但是由于异常处理函数的指针保存在栈上,这时一个栈溢出可能直接导致异常处理函数指针被覆盖,异常会出现在你意想不到的地方。微软有大神曾说过,想你的代码后续可维护就删掉代码中所有的trycatch。
又由于语言非常底层,当程序出现底层崩溃的时候,想解决掉这个崩溃往往要读一些汇编,这时候如果使用了大量的模板,比如stl和boost,那生成的汇编几乎完全不可读。看过stl代码的人应该都知道这玩意儿写的有多晦涩,就导致了你想用一个C++库,如果不了解这个库的实现原理,那大概率会出错。
C++的复杂度又让你很难真的理解那个库的原理,结论就是C++强大,但是必须用的人也强大。C++直到现在还在疯狂的增加特性,我用了四五年我自己都不敢说自己会玩C++,能用其他语言就优先考虑其他的,把C++作为最后的选项,不建议新手学,除非你的目标领域必须使用。
Rust是为了解决C和C++的各种问题而出现的语言,性能接近C++,通过所有权限,不用垃圾回收就解决了生命周期管理。有包括管理,又有极其严格的编译器检查,能编译通过的代码就不会有大问题,编译器直接把水平不够的新手挡在了门外,通过解决出问题的人是方式,从根本上解决了C++的问题。
我第一次用rust写个小程序就跟编译器较了一天的劲。它的缺点就是学习难度太大,语言太小众,库太少,很多轮子都要自己造。但是随着微软之类的大厂使用,相信之后发展会比较好,新项目如果需要C或者C++可以优先考虑rust。
我现在主要也是一个Java程序员,对于Java这个语言我并没有什么很特别的感觉,配套设施完善,什么都能干,体验非常赞,就是内存占用有点难看。想搞安卓考法的必修,阿里有大量的服务器项目使用Java。
唯一想吐槽的是gradle这个构建系统,版本问题搞得很头疼。
JavaScript
js是前端的必修课,没得选,然而node让js也万能了。用node做过后端项目后,感觉动态类型语言还是不太适合,由此带来的低级错误很多,虽然可以用typescript解决,但是最终还要编译成js,无法直接调试。由于没有原生的多线程支持,利用cpu也只能通过开多个进程的方式。小项目的后端做着玩还可以,大点的还是考虑Java或者是go吧。
Lua是极其轻量的语言,语言特性接近js,runtime非常小。作为一个脚本语言,性能出色,内存占用低,很适合各种嵌入式设备或者插件系统。
这玩意儿一定是谷歌为了解决自己后端项目中遇到的问题而开发的语言,各种特性直戳痛处。语法简单,规范严格,这就让不管什么水平的开发写出来的代码差距都不会太大。
静态类型,没有默认参数,没有异常处理,可以降低犯低级错误的概率。编译成原生代码,可内嵌C代码,原生支持协程和多线程,可以保证性能,支持跨平台编译,输出单文件方便部署,这些优点带来的问题是Go的指向性太强,只适合做高并发api类的后端服务。
想用Go开发其他任何领域都会觉得特别别扭,类似C的语法过于简单,又没有泛型,导致很多功能都显得很啰嗦。但由于Go解决了部署问题,跨平台问题,降低了研发人员的水平要求,降低了犯错误的概率。
关于这些语言的性能没有绝对的排序,但根据我做项目带团队和面试的经验,绝大多数的程序员的水平都还碰不到语言的性能瓶颈。一般来说对语言的理解以及多线程,算法,网络,数据库,缓存。硬件甚至业务的理解都比语言的性功能影响更大。
再次强调,语言只是工具,只有适不适合,没有好与不好。基础强大,用哪个都不怕,基础太差,用什么都尴尬。
只是会语法并不是掌握了这门语言,要知道程序背后发生了什么。比如C++的对象模型,Java的虚拟机,垃圾回收,Go的协程,js的promise,rust怎么编译通过等等。
基础是一门语言的核心,不管学习哪一门语言都要重点学好基础。
程序员如何做副业赚钱
今天聊一个非常热的话题,最近大家应该也在关注和思考过这个话题,尤其是由于2020年年初疫情的一个影响,那么像公众号、知乎等等各种平台都充斥着这些内容,甚至还出现了所谓副业元年,副业刚需的说法。严格来说呢,我已经做了四年的副业,算得上是一个探索副业的行动派。借着这个机会,我想和你们分享一下我的经历和心路历程,我的探索方式可能并不完全适合你,但也希望能够给你带来一些启发。下面我就以一个实操者的身份和大家聊一聊我是在一个什么样的情况下开始做的,我是怎么在保证主业正常收入的情况下,一点一点让副业收益从月入零元到月入1万元,做这些需要付出一些什么,有哪些好处,有哪些坏处。最后,我也会从我个人的角度,去谈一谈副业,仅仅是副业吗?副业的本质究竟是什么?2016年到2017年,我整个人有点像无头苍蝇一样,没有目标,更没有方向,于是我就想着给自己找点事情做,也开始结合自己的职业和擅长的东西,去重新规划自己的未来。但是当你真正做起事来,你可能会发现还是游戏好玩,我当时就想着要戒掉游戏,比如说想打游戏了就去看书,不想看了呢,就逼着自己看书,那么时间长了,游戏慢慢就戒掉了。当然一些习惯也不是说改掉就改掉,还是得有一个循序渐进的过程。再然后呢,就是2017年,我开始跟着一些it前辈们的脚步去做一些分享,在网上写文章,分享一下自己的想法和知识,其实在网上写博客也不是一个非常简单的事情。最初,也遇到了很多问题,比如说分享内容不确定,不知道该写什么,写不出文章,做不到周更,因为开发人员偶尔会很忙,那么还有就是文章阅读量长期就是一个个位数。另外就是心里没底,不知道自己能坚持多久。针对这些问题呢,我摸索出了一些方法啊,比如从日常工作中找灵感,找题材,这样就渐渐的找到了要写的东西,做不到周更,就找个空闲的时间多写几篇,做出一个周更的样子。写不出东西来,就多去看书,多去学习,思考一下写作方法。没人阅读,这个肯定有些伤心的,但我知道自己是个新人,有人读反而有些怪,先默默的做,不断的写,不断的学习,就这样坚持了一年多,写了差不多100篇,前面提到的这些问题,也就不再存在了。由于在网上发表的文章比较多,渐渐的也收到了一些出版社的约稿。不知道你们的想法是什么,我当时对于这些约稿,是当场婉拒的,因为自己几斤几两还是比较清楚的,虽然有过写作经验,但相较于出版书籍的要求,还是有很大的差距,所以也没怎么纠结就先拒绝掉,因为可行性实在太低。无巧不成书的是,不久之后就有了一个现场的机会,主要有以下几个原因让我觉得可行,一是,专栏要求的篇幅并不多,10到40天都可以,与书籍制作相比较,成本降低了很多。我有一点写作经验,而且我写的博客都是系列的形式,比较类似专栏的模式,再加上当时我在规划第四个关于spring/mvc/mybatis项目的系列文章,刚好可以投稿尝试一下,于是我当晚就填写了申请材料,我第一个真正意义上的副业也由此开始了。之后呢,就有了第二个,第三个,第四个专栏,具体的细节这里就不多说了。我来讲一下我在做专栏时遇到一些问题,让大家也有一个实际的参考。首先,是时间成本和精力消耗的增加,写个人博客是非常自由的,写专栏的要求非常高,比如说写一篇博客可能500字也可以,2000字也可以,写专栏的话,基本上打底是3000到4000字,还要不断地按照责任编辑的要求去增增改改,和写一篇博客相比需要花费10倍甚至20倍的时间和精力才能够完成一篇专栏文稿,非常累。另外,咖位太低,这是一个非常现实的问题,平台选择专栏作者时,也会严格审核作者的经历和title,好的平台对你的要求会更高,甚至不会通过你的选题,我就更惨了,压根儿没卡位,那么能做的就是多沟通,多准备材料,耐心等待,其它的其实也做不了什么,如果你的咖啡太低,起点也低,只能够付出更多的时间和更多的努力。还有一点,就是退稿和专栏无法上线,也是一个非常现实的问题,并不是说你有个很好的想法,就可以正常上线专栏,我们还要考虑其他的一些因素,比如说规划的这个专栏受众如何,篇幅是否合理,平台内是否有同类竞品,作者的咖位是否足够,平台要考虑的东西太多了,那他通常考虑一圈下来,可能你这个专栏就没了,我有好几个课程,最后也因为各种原因夭折了,得知结果时,那种绝望感和失落感真的让人很痛苦。你要是问我有没有想过放弃,那肯定是想过的。最终为什么没有放弃呢?我就是想坚持一下,然后再坚持一下。发展到现在,我的副业总的来说就是写博客,做开源项目,出技术专栏,还有录制视频课程,当然目前还在做大数据的一个出版。当然程序员的副业肯定不止这几项,不过由于时间和精力的限制,我目前也就涉及到这些内容。到目前为止,我写了300篇左右文章,做了6个文字类的付费专栏,还有3个视频课程,目前也正在制作新的课程,可以说这几年一直没有停下来过。副业的路径肯定不止这些,像其他人可能走的就是另外的一些道路了,比如写博客,做开源项目之后,去运营公众号,运营知识星球,去B站和头条号这些地方做一下自媒体,去做一些收费的项目,把开源版本做出商业版本等等。接下来,就是大家比较关心的话题啊,比如说这个副业赚钱吗?副业能赚多少钱?我就拿最近几个月的收入为例,税后实际到手的收入基本上就是这个银行卡收款和微信提现,还有一些金额比较零碎呢,就没有计算在内。当然以上是我做了近四年时间才有的结果。刚开始做这些的时候是没有任何收入的,而且投入了很多的时间和精力,这种状况甚至持续了很长时间,你可能不知道这是一种什么样的感觉,我举一个例子,从你看文章的这一天起之后的一个月,你每天都在做事,但是一分钱工资都没有,你想一想这是个什么样的滋味?而且这种情况并不会在一个月之后就有所好转,而是将近两年的时间,也就是说未来的20个月你都没有收入。但是只要坚持下来,就有可能从0到100,再从100到1000,从1000到1万。随着我做的课程和专栏越来越多,这部分收入自然也就慢慢的增长了起来。如果顺利的话,应该可以在30岁前就会有一个非常不错的副业收入,这样会留给自己更多的选择空间,我不会因为工作的变动而去盲目地投递简历,也不会因为压力过大而贸然选择工作岗位。副业这件事情,给了我很足的底气去应对未来一些不确定的变化。下面我来解答一下大家可能关心的一些问题,比如说副业到底是什么?它仅仅是副业吗?我认为,副业其实是我们主业之外的一个工作,另外,他也不仅仅是副业,也可以说是我们的一个Plan B。副业能做什么?你可以去做微商,去开奶茶店,去写专栏,也可以做这个企业培训,开网店,出视频课程,或者出版书籍,做外包等等,适合你的才是最好的。副业能赚钱吗?相信大多人应该只要认真做一件事情都会有收获。至于副业赚钱,我也觉得肯定是可以的,只是收益多少和时间长短的问题。由于副业这个话题非常热,肯定有很多朋友也想投入进去,甚至买了书,参加了各种训练营,学会了很多副业的方法和路径,可能依然赚不了钱。这里,大家需要注意一下,副业能赚钱,但是不一定赚钱。下面回答一些大家的疑惑不是,我并不认为这是刚需,首先呢,是他的时间和精力花费太大,职场的天花板其实也很高,你只要努力去做高级技术开发,去做架构师,去晋升管理层,一样会有属于你的精彩,副业只是其中一种选择而已,所以把副业车道刚需上,我并不是十分赞同。这个需要结合自身情况,那么做作业花费的时间其实有可能比上班花费的时间和精力还更多,如果主业没有做好,不建议,如果不够坚持啊,也不建议,如果想尝鲜的话,我感觉可以试一试,因为并没有特别大的开销,只是说需要多花费一些时间成本。副业给你无限的可能,也给你不错的收入,好处是很多的,坏处也是有的,比如说没有时间陪伴家人,消耗精力比较大,而且可能会没有任何收获,徒劳无功,不确定性也非常大。副业并不是每个人都会去做,或者有时间精力去做,所以这个问题的答案是否定的。我们还可以做其他很多事情来为将来做准备,副业只是一个切入口,我觉得更重要的依然是认清当下的自己,并朝着自己渴望的将来前行,未雨绸缪,做出自己的Plan B,这才是我们应该着重去思考和行动的。最后的最后,我将自己的副业之旅总结成了16个字,缓解焦虑、未雨绸缪、天道酬勤和拓宽视野。希望这16个字也能给你带来积极的影响。今天的内容就到这里,十分希望我的分享可以帮助到你,也希望你在下方的留言区和我探讨。
现在编程主要用c还是c++?哪里可以通过编写程序赚钱??有这样的兼职吗?
他们都是一种语言而已。会的话都可以赚钱
现在编程主要用c还是c++?哪里可以通过编写程序赚钱??有这样的兼职吗?
他们都是一种语言而已。会的话都可以赚钱