>>交流分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  视频课程  卫琴专栏  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 13432 个阅读者 刷新本主题
 * 贴子主题:  初学者该学哪种编程语言 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2022-05-09 10:11:30     消息  查看  搜索  好友  邮件  复制  引用

本来想写点最近学习的东西,但是最近好多粉丝再问我一个问题。
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小 image-20200105164345384  
于是我决定把我这个过来人的一些建议给到你们,希望大家少一些不必要的迷茫,多花点时间去学习该学习的东西,去做一些重要的事情。  

  刚开始学习编程的困惑

    在刚开始学习语言的时候我也很纠结学什么语言好?这个问题我相信很多人在最开始学习编程的时候都会纠结,到底选择一门什么样的语言才能使自己在千军万马的工作大军中出奇制胜呢?总害怕选错了语言导致自己未来竞争不占优势。

   我把各个语言的热度榜拉出来看了。
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小 img   点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小 topn10走势  
   其实看来看去都差不多,主流语言就那些。像极了股票市场的涨跌图,起起伏伏。不过编程语言的起伏波动没那么大。

   就这个问题,我还问了一些工作的学长学姐,看看他们这些过来人都有什么样的见解。还好我人缘好,他们都很耐心的给我讲了很多,以下是他们给我的建议。  

  过来人的一些建议

    一个在京东做云计算的学长语重心长的这样和我说,学习语言要看你以后准备做什么? 和你未来工作方向有关。简单列几个未来方向供你参考  
  •   如果你想从事和你自己专业(我的专业是电子信息工程)相关的方向工作的话,你可以好好学习C语言,汇编语言。因为你的专业以后工作方向在嵌入式和硬件编程方面较多。嵌入式编程讲究的是嵌入,所以一定要小巧和轻量,C语言符合这个场景需要。
  •   如果未来工作做纯软件的行业的话,你不应该局限于选择怎样的语言,工作需要什么你就学习什么语言,或者说项目需要什么语言你就必须很快学习这个语言,不过在学校学习还是建议学好一门高级编程语言。学好指的是学到精通,精通就不用解释了。你要对语言有所见解,而不是简单会用。
  •   如果你未来想算法一类的工作,你就应该把精力放在算法钻研上,而不是语言本身。
语言只是工具,就好比计算器一样的工具,用计算器算题和设计、制造计算器是完全不一样的。

大多数都是计算器的使用者,而不是设计生产制造者。完成一件事情可以选择很多种工具,就好比学生喜欢科学计算器,仓库老板喜欢那种很大声的简单加减乘除计算器就OK了。

一个阿里的学长告诉我  
  •   主流语言随便选
  •   学一门精一门,其他的都是触类旁通
  •   注重工具思想,同时也要注意工具出了问题该如何处理
    看了他们对我的话语,我得到的理解是,选择语言之前你要确定好你的未来工作方向(工作还是很宽泛的一个词语,人的一生大致可分为学习、生活和工作三件事,这三件事将伴随我们一生。学习和生活我们都能很好的理解,但是工作这件事大家可能会觉得有些不符合,有些人就是一生不工作,其实不然,"一个人的工作是他在社会中所扮演的角色。"),这样有目标的学习一门语言才能更好的帮助你未来工作,当然同时也不要局限于一门语言,毕竟技多不压身。 求点赞   求关注    

   还有一个问题,当我们不是很明确未来到底从事什么工作方向时,我们可以去找寻下自己的兴趣,其实大学很重要的一点就是找到自己的兴趣方向,尽量让自己的兴趣和自己工作方向相结合,能拿兴趣作为工作方向是再好不过的了。就像两个相爱的人在一起,每天都会是开开心的。如果是因为某些原因让两个没有感情基础的人在一起,那只能靠在一起之后才慢慢培养相爱的感觉。后者固然是不好的,但是为了生活很多人还是被迫选择了后者,趁年轻,趁还有机会,我希望你能选择前者。

   当然还有很多其他的学长学姐给了我很多不一样的建议,但是总结下来就如下几点。  
  •   找一门和未来工作相关的语言开始学,一定要学到精通。
  •   要有工具思想,语言只是工具,工具是用来解决问题的。我们要做的灵活运用工具,了解工具的特性,顺便如果工具除了出了问题你会修理工具,那就再好不过了。
  •   不要在选择语言上浪费太多时间,而应该在选择工作方向上找到自己的兴趣。
  •   多花时间在工作方向上需要的其他技能上。

  结合过来人建议之后我的选择

    听了过来人的建议之后,这几句经典涌上我的心头 "林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。"

   我的工作方向是后端开发,我也比较喜欢后端开发,加上大学本来就会开设C语言和C++语言。于是我很顺理成章的选择了C语言作为我的编程入门首选语言。

   现在作为过来人说说吧。  
  •   从学术研究上看,编程语言语法都差不多。
  •   从原理上看,编程语言都类似,对一门编程语言掌握到透彻后,再学习其它编程语言可以触类旁通。
  •   针对的是学习能力较强的人。有一定基础之后,可以快速的学习另一门技术。
    选择语言没必要那么纠结,但是编程入门我首推C语言,既有低级语言的高效,又有高级语言的抽象。C语言有很多特性,比如小巧,对操作系统很友好特别是linux操作系统(不要害怕linux,你工作以后100%会接触linux,不管你从事互联网什么行业,你都会或多或少的接触到linux),运行速度快,支持汇编级别优化,可移植性好等等其他特性。当然也有缺点,比如开源框架少、不是很适合写业务系统,面向对象支持不是很好。C语言作为入门语言会有助于你去了解操作系统的运行原理,内存控制原理,对这些的了解有助于你学习其他任何高级编程语言。至于学完C语言之后,你不用纠结接下来学什么,接下来毫不犹豫用C语言把数据结构与算这本书学完并实现常用的数据结构与算法。

   说下为什么学完C语言一定要去学习数据结构与算法,有以下几点原因。  
  •   趁热打铁,刚好巩固C语言的语法和一些特性。
  •   数据结构与算法是一门必修课,与未来从事什么方向无关(不要拿一些特殊职业出来钻牛角尖奥)。
    为什么我首推C语言作为编程入门的语言,而不是其他语言,并不是我觉得其他语言怎么的。除了以上说到的C语言的特性之外,还有一个很重要的原因,C语言几乎是所有计算机专业和相关专业都会开设的课程,作为入门语言,学习成本小,和同学、老师交流起来方便。这些因素会促使你很快学精C语言。

   学完这些之后,你需要学习和你未来方向相关的技能了,比如未来是做前端、后台、算法、AL等大领域里面的小领域。扯远了  ,继续说选语言的事,作为一个过来人很正式的告诉你,你需要学好一门面向对象语言即可,其他的语言只需要在工作中用到的情况下花几天时间就可以搞定,或者现学现用。因为你只要把握了一门C语言+一门面向对象的高级语言,其他语言的学习会触类旁通,学习成本会非常小。 学通了C语言,意味着你对变量类型、逻辑结构、函数栈、内存模型,程序编译原理、汇编级别优化都会掌握(看我的关键词"学通",不是简单的学个hello world)。学完一门面向对象的高级语言,意味着你对面向对象的三大特性(继承、封装、多态)、抽象、设计模式有了很好的把握,这个时候工具使用已经到了很熟练的状态了,可以试着用工具去创造内容了,比如去github找几个项目练练手,或者用编程解决日常生活中遇到的问题。
   只要你是方向上没错,选择语言很so easy。
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

C语言知识点思维导图
    点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小    
     我喜欢那些闪光的东西,比如冬日的雪花,天上的星星,还有你的眼睛。


----------------------------
原文链接:https://www.cnblogs.com/zhonglongbo/p/12153107.html

  Java面向对象编程-->Java常用类(下)
  JavaWeb开发-->JSP中使用JavaBean(Ⅰ)
  JSP与Hibernate开发-->通过JPA API检索数据
  Java网络编程-->创建非阻塞的HTTP服务器
  精通Spring-->Web应用的国际化
  Vue3开发-->绑定CSS样式
  BIO、NIO和AIO的区别、三种IO的原理与用法
  TCP、UDP及Socket代码示例
  Java中保留数字的若干位小数位数的方法
  ThreadLocal的内存泄露的原因分析以及如何避免
  JDK自带JVM调优工具的用法
  java.util.logging.Logger使用详解
  请求大佬们的帮助
  JDBC API中的桥接模式
  最实用的10个重构小技巧排行榜,你都用过哪些?
  volatile 实现原理
  深入研究java.lang.ThreadLocal类
  正则表达式范例
  Java入门实用代码: 队列(Queue)用法
  Java性能优化总结
  Java中用动态代理实现标准的DataSource数据源连接池
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。