想做副业,学编程,学哪种语言比较好?(零基础) 255
请问有什么好的语言推荐,网上语言真的是眼花缭乱,不知道怎么去选择。 展开
我今天写这篇文章的目的是想给大家一个参考。
决定用什么语言的因素有有很多,比如性能,内存占用,开发难度,运维难度,目标平台,可执行文件大小,代码可维护性,项目周期,项目规模,招聘难度,团队构成,历史遗留问题,甚至派系斗争等。
比如腾讯就有大量历史遗留的C和C++的服务器代码,毕竟20年前没得选。又比如空降技术负责人可能会为了让自己人上位,让自己团队出成绩,选择用其他语言或者框架对本来工作良好的系统进行重构。
下面开始聊语言
Python
先说python,是因为这个语言小学生都开始学习了,以后不会python要被小学生欺负了。语法简单,除了前端几乎万能,可用的库极其丰富,能想到的功能几乎都有现成的库可以用。不管是搞爬虫,做人工智能,机器学习,数据分析,还是自动化运维,自动化测试,python几乎都是首选。不想当程序员还想学习一门语言的话,学习python就没错了。缺点是慢,但是能让机器累的事,何必让人来累。
PHP
PHP是世界上最好的语言,可能这个已经成为很多程序员的梗。
我没用php开发过大型项目,自己做东西的感觉是这语言非常简单,以前用的人很多,招聘容易,但是不适合做复杂的项目。现在用得越来越少了,迅雷以前有不少运营活动页面是PHP做的。
C
C的语法足够简单,应该是最接近机器语言的高级语言,适合编写操作系统底层,驱动程序,硬件相关的程序以及看重性能的程序。由于过于简单,构建大型程序的复杂度非常高,建议想往研发方向走的同学都学习一下C语言。
可以对计算机一些底层原理了解,比如指令执行过程,内存管理,异常,多线程,编译过程等又更深层次的了解。掌握C语言再学习其他语言会变得很轻松,学习破解也有帮助,毕竟汇编基本都可以反编译出C代码。
C++
C++是一个糟糕的语言,这不是我说的,这是Linux之父说的。我自己用C++四五年时间,越到后面就感觉这句话越有道理。
首先C++的强大是毋庸置疑的,但是作为一个跟C一样偏底层的语言,如果不理解写的代码背后到底发生了什么事,如果出了错,你是永远不可能知道错在哪里的。
一个没有垃圾回收的语言,不用智能指针很容易导致内存泄漏,错误的用了智能指针不但内存泄漏之后不好解决,还容易导致提前释放等问题。
C++支持强制类型转换,如果转换前后的内存结构不一样,很有可能导致各种隐性问题。还有Java之类非原生语言的异常处理都是语言自定义的异常,而C和C++中的异常很多都是操作系统层的异常。
Windows下一个简单的try catch,你觉得可以抓到try中所有的异常,但是由于异常处理函数的指针保存在栈上,这时一个栈溢出可能直接导致异常处理函数指针被覆盖,异常会出现在你意想不到的地方。微软有大神曾说过,想你的代码后续可维护就删掉代码中所有的try catch。
又由于语言非常底层,当程序出现底层崩溃的时候,想解决掉这个崩溃往往要读一些汇编,这时候如果使用了大量的模板,比如stl和boost,那生成的汇编几乎完全不可读。看过stl代码的人应该都知道这玩意儿写的有多晦涩,就导致了你想用一个C++库,如果不了解这个库的实现原理,那大概率会出错。
C++的复杂度又让你很难真的理解那个库的原理,结论就是C++强大,但是必须用的人也强大。C++直到现在还在疯狂的增加特性,我用了四五年我自己都不敢说自己会玩C++,能用其他语言就优先考虑其他的,把C++作为最后的选项,不建议新手学,除非你的目标领域必须使用。
Rust
Rust是为了解决C和C++的各种问题而出现的语言,性能接近C++,通过所有权限,不用垃圾回收就解决了生命周期管理。有包括管理,又有极其严格的编译器检查,能编译通过的代码就不会有大问题,编译器直接把水平不够的新手挡在了门外,通过解决出问题的人是方式,从根本上解决了C++的问题。
我第一次用rust写个小程序就跟编译器较了一天的劲。它的缺点就是学习难度太大,语言太小众,库太少,很多轮子都要自己造。但是随着微软之类的大厂使用,相信之后发展会比较好,新项目如果需要C或者C++可以优先考虑rust。
Java
我现在主要也是一个Java程序员,对于Java这个语言我并没有什么很特别的感觉,配套设施完善,什么都能干,体验非常赞,就是内存占用有点难看。想搞安卓考法的必修,阿里有大量的服务器项目使用Java。
唯一想吐槽的是gradle这个构建系统,版本问题搞得很头疼。
JavaScript
js是前端的必修课,没得选,然而node让js也万能了。用node做过后端项目后,感觉动态类型语言还是不太适合,由此带来的低级错误很多,虽然可以用typescript解决,但是最终还要编译成js,无法直接调试。由于没有原生的多线程支持,利用cpu也只能通过开多个进程的方式。小项目的后端做着玩还可以,大点的还是考虑Java或者是go吧。
Lua
Lua是极其轻量的语言,语言特性接近js,runtime非常小。作为一个脚本语言,性能出色,内存占用低,很适合各种嵌入式设备或者插件系统。
Go
这玩意儿一定是谷歌为了解决自己后端项目中遇到的问题而开发的语言,各种特性直戳痛处。语法简单,规范严格,这就让不管什么水平的开发写出来的代码差距都不会太大。
静态类型,没有默认参数,没有异常处理,可以降低犯低级错误的概率。编译成原生代码,可内嵌C代码,原生支持协程和多线程,可以保证性能,支持跨平台编译,输出单文件方便部署,这些优点带来的问题是Go的指向性太强,只适合做高并发api类的后端服务。
想用Go开发其他任何领域都会觉得特别别扭,类似C的语法过于简单,又没有泛型,导致很多功能都显得很啰嗦。但由于Go解决了部署问题,跨平台问题,降低了研发人员的水平要求,降低了犯错误的概率。
关于这些语言的性能没有绝对的排序,但根据我做项目带团队和面试的经验,绝大多数的程序员的水平都还碰不到语言的性能瓶颈。一般来说对语言的理解以及多线程,算法,网络,数据库,缓存。硬件甚至业务的理解都比语言的性功能影响更大。
再次强调,语言只是工具,只有适不适合,没有好与不好。基础强大,用哪个都不怕,基础太差,用什么都尴尬。
只是会语法并不是掌握了这门语言,要知道程序背后发生了什么。比如C++的对象模型,Java的虚拟机,垃圾回收,Go的协程,js的promise,rust怎么编译通过等等。
基础是一门语言的核心,不管学习哪一门语言都要重点学好基础。
2022-06-28
什么是最适合初学者的编程语言?哪种编程语言最好?
从小我就知道我想成为一名程序员。关于它的事情总是令人兴奋。编程就像一个思维难题,您需要找出如何利用计算机来表达自己的创造力。刚开始的时候,我很迷茫,不知道从哪里开始。我最终选择了Java,主要是因为这是我真正听说过的唯一语言(谢谢,《我的世界》)。我不知道Java是用来做什么的。从Codecademy开始,我学习了非常基本的控制台语法。我觉得这很无聊,因此,我从中学不到任何东西。不幸的是,这段经历使我离开了很长一段时间。
如果您迷失了方向,不知所措,我想让您知道您并不孤单。有太多不同的技术,语言,框架,库等,因此很容易忘记每个功能。我想,您单击本文的原因是您有这种感觉,并问自己"我从哪里开始?"。这个问题的问题在于,没有一个简洁明了的答案。就像问"我应该使用什么螺丝刀?"或"我的汽车最适合的轮胎?"。简短的答案是:这取决于。
选择语言
当您进入编程领域时,您需要考虑一些路径和最终目标。基本上,您想通过编程完成什么,您想解决什么问题。不要仅仅因为某一种语言受欢迎而选择一种语言,或者您的朋友说您应该尝试一下。您想学习一种用于构建您热衷的东西的语言。您需要对目标进行一些研究,并查看完成该任务需要哪些技术。
一个例子
假装您想了解Web开发。为了帮助您理解,我将在Medium网站上对此进行解释。 Web开发的第一部分是前端。当您在Medium网站上阅读文章时,您正在看的是前端。它使用三种语言构建:HTML,CSS和JavaScript。 HTML和CSS不是编程语言,而是与JavaScript一起使用以创建应用程序的语言。 HTML(超文本标记语言)用于向您的网站添加元素。您在中级文章中阅读的文本全是HTML,按钮和图像也是如此。 CSS(层叠样式表)使您可以设置页面上看到的这些元素的样式。本文中使用的字体,文本的位置,不同组件的不同大小,均由CSS控制。 JavaScript是用于Web开发的编程语言。它用于向页面上显示的元素添加功能。当您单击作者帐户上的"关注"按钮时,正在使用JavaScript。 JavaScript使用HTML和CSS制作了一个按钮,用来跟踪该帐户,然后开始向您展示他们的故事。
Web开发的第二部分是后端,用户实际上看不到它。后端是存储所有站点数据的位置,然后将其发送回前端,以供用户查看。此帖子的评论或拍手数量全部存储在此。然后,您可以使用JavaScript来获取此信息并对其进行处理。我不会详细说明,但是希望您理解我要提出的观点-您需要弄清楚要构建和利用必要技术以完成任务的内容。
您可以认为它就像一台机器一样进行编程。假设有一辆汽车。为了正常运行,它需要引擎盖下的各种不同部件一起协同工作。
学习资源
确定了要学习的语言后,下一步就是找到要使用的资源。这完全取决于您的学习方式和预算。通过阅读或观看视频,您可能会学得最好。您可以花钱购买课程或书籍,也可以只使用YouTube等免费资源。学习编程并非要花钱,而是要花费时间。您的时间很宝贵,因此请确保明智地使用它。我将在下面链接到一些我发现最有用的资源。
1. Udacity
该网站提供免费和付费的编程课程以及各种其他主题。付费的几乎总是以10-11美元的价格出售。但是,这很受欢迎。有一些杰出的讲师,然后有一些非常糟糕的老师。幸运的是,他们确实提供30天退款保证,因此,如果您不喜欢自己的课程,则可以获得全额退款。
如果您想学习Web开发,我目前正在上一门很棒的课程,我强烈建议您退房。这是那些有兴趣的人的链接。
2. YouTube
该平台上有大量免费视频,它们对于学习基础知识和更高级的主题非常有帮助。尽管与Udemy一样,它还是很受欢迎的。
我最喜欢的创作者包括Brad Traversy,Web Dev Simplified,The Net Ninja和Colt Steele。
3. Codecademy
一个免费的网站,您可以边做边学。您在网站上有一个内置的代码器,可以为您输入的代码提供即时反馈。这是一种习惯于编写代码方式的有趣方式。他们提供了多种语言的大量课程。
4. FreeCodeCamp
与Codecademy非常相似的另一个站点,您可以在其中浏览器中进行编码。虽然我没有亲自使用过该网站,但一直有人告诉我,它对了解基础知识有很大帮助。对于那些对程序感兴趣但还不想投资的人,它可以作为一个很好的切入点。
无论您选择利用哪种资源,都需要确保自己也在练习。在学习了一个主题之后,尝试并以此为基础。
警告—不惜一切代价避免"教程地狱"
> via Freepik
正如我刚才提到的,构建辅助项目对于成为一名成功的程序员至关重要。在学习编程时,很有可能在某个时候发现自己陷入了"教程地狱"。这是一种学习状态,您必须依靠教程,不能自己构建任何东西。您需要有人牵着手,告诉您确切的操作。没有此帮助,您将无法做到。别误会,课程是学习编程语言基本语法的绝妙方法,但它们只占您学习内容的25%。
绝大多数需要使用您所学的知识制作自己的应用程序。我知道这非常难,因为在那里有很多课程可以构建出色的应用程序。尽管您需要花一些时间并了解基础知识,然后再去构建有趣的东西。我被困在教程地狱中浪费了一年多的学习时间。我没有动力,我无法独自做任何事情,而且对所教的内容我几乎没有保留。自从在我最近的课程中采用一种新方法,利用包括的编码练习并尝试在看到解决方案之前构建应用程序以来,我学到了很多东西。
通过这样做,您将学到的最重要的内容是如何使用Google。您将学习如何独自解决问题。现在这并不容易,但是未来的自己会感谢您。
总结
编程是一项很棒的技能。那里有许多种语言都可以满足自己的目的并解决自己的问题。您需要弄清楚自己的热情是什么,并通过代码进行追求。这将是一条漫长的路。当然,这并不容易。您将在某个时候遇到障碍,您只需要为他们做好准备,并且知道您会成功解决。
祝你好运!
https://medium.com/codex/what-is-the-best-programming-language-to-learn-as-a-beginner-50f6f967fc4b
文章出自:http://www.cnitedu.cn/it/new/202110514.html
希望就是学一个语言,因为只是副业或者是业余爱好。不是深入去学习。最好是有一个普适性
那你需要评估一下哪种需求对你比较重要了,如果后面的需求重要点那建议就是java了,它当然它也能实现你之前的需求(相对来说麻烦不少)
2020-10-27