最近总有一些小伙伴问我,现在大二,想自学编程,但是
不知道如何下手?
不知道该学哪一门编程语言,c/c++?java?c#?还是php?
不知道c++、Java、php之间有什么区别?
是不是学习java之前要学c?
学习了Java基础之后又该学什么?
如果你也有这些疑问,那就继续看下去,如果没有就可以return了。
首先不要灰心哈,小编到底也是过来人,纯自学的,你们现在遇到的坑,我基本上都爬过。我大二的时候都不知道javascript和Java有什么区别,甚至以为数据库和数据结构有紧密的联系,我现在依然能找到一份满意的工作和待遇!!只要记住——你们现在有大把的时间去爬坑。小编也将从以下几个方面,通俗易懂的表达以下自己的经验和想法,希望可以帮助到大家。
一、首先有必要了解一些常见的编程语言
小编接触到的一些常见的编程语言,c、c++、Java、c#、php、python、javascript、Objective-C、Swift、R等。
1.学习的顺序
小编大学课程中有”谭浩强c语言程序设计”这门课程,我当时想学习Java同时也很迷惑,c和java有什么关系?是不是要学习java必须先学习c语言?你们有木有如此迷惑过?现在告诉你,没有半毛线关系!你如果想学java,c#,php等任何一门语言,立即就可以学,没有先学c才能学java的必要条件。只不过是说,你如果有了其中一门语言的基础,学习其它的比较容易入门而已,毕竟所有的编程语言也有一些共性,都会有基本的语法,数据类型,顺序结构等。
2.语言特性及归类(此部分也可以直接break(跳过))
当然以下常见编程语言的分类只不过是我个人的理解及浅薄的经验之谈。做个参考就好。按照语言的特性,大概可以这样归类一下:
如c、c++语言是面向结构的。c++扩展了c语言的特性,具有一些面向对象的特性。Objective-C据周围同事说是苹果公司对c语言一种封装,反正是用来开发ios应用的,其语言特性和调用方式与c语言很像,因此如果你有c语言的基础,入门ios开发很easy.
如java 、c#是面向对象的。具有抽象、继承、封装、多态等特性,因此你如果学习了其中一门语言,另一门语言也能很快上手。至于面向结构和面向对象有什么区别,小编不知道如何表达,自行百度吧.
如python、javascript是脚本语言,具有动态语言的特性。意思就是可以再程序运行时改变变量的类型,例如在javascript语言中,声明一个变量赋值为一个数字,运行程序后,你把此变量动态赋值为字符串,没问题是合法的,程序正常运行;相反如果在java(没有动态语言特性的)中声明一个为int类型,如果你给这个变量赋值为字符串类型,程序就会报错编译不通过。
因此,如果你想学习两种编程语言,建议你不要选择特性一样的两种语言学习,例如你如学习了java,你可以选择Python或者c++学习,这样学习的时候可以比较一下不同特性编程语言各自的优缺点,对你以后做架构,选择业务实现的技术方案有很大的帮助。
二、如何选择一门编程语言
了解了基本的编程语言后,相信你又跌入了该学习哪一门语言的坑中。这个问题的关键在于你不知道学了这门语言能干什么!也就是编程语言的应用领域或者开发方向。
以Java为例(小编是学Java出身),Java在移动端,服务端,大数据等领取有着广泛的应用,那么你学习Java基础之后就可以选择这个几个方向,移动端就是Android开发,服务端像Javaweb开发,大数据如hadoop技术等。
c语言可以 嵌入式方向学习;c++ 可以用来开发游戏、游戏服务器框架及游戏引擎、编译器等;c#可以向 winfrom窗体程序开发(就是window上安装的exe程序,如qq),asp.net网站开发技术,服务端开发,Unity3D游戏开发等;javascript,这个语言的方向就太多了,号称全站开发语言,node.js全栈开发技术,web前端jQuery,Vue.js,移动端技术ReactNative等;python,可以用来做网站爬虫,搜索引擎,也可以开发网站,人工智能领域应用更广泛如数据分析,机器学习等。。。。。
小编理解的大概也就这么多,说的并不准确,建议大家去谷歌 or 百度,或者去知乎找答案,关键词如java开发方向或应用领域。
更加强烈建议大家去一些互联网招聘网站如拉勾网看看一些技术岗位,这样定位更加准确,如下图
这下你总该知道你要学习什么了吧
三、寻找学习路线
当你确定了你想学习的编程语言及以后的开发方向或应用领域后,你肯定又不知所措,我该怎么学习呢,先学什么,后学什么。
这个问题小编就心有余而力不足啦,毕竟也只是学过Android和一点点
javaweb而已,最多知道它俩的学习路线。
但是你可以百度搜索,作为一个程序员搜索引擎才是你最好的老师!!,如你想学习ios,关键词ios学习路线图,肯定有不少。菜鸟要飞的平台上也提供了常见开发技术的学习路线图。小编更推荐你去一些培训机构的官网浏览他们的培训的课程目录,很详细的!否则怎么吸引人呢。
四、我该选择哪一个方向
即使前3步你都OK,你肯定还会问类似的问题,我到底是学Android还是ios,哪个工资高?大数据技术现在很热门,选择haoop吧?
首先,根据你自己的兴趣。这个和不说的一样,作为一个小白,你都不知道Android开发到底做些什么,hadoop又是什么玩意,谈什么兴趣呢?除非你确定你对某一个领域感兴趣,那就去学吧。
其次,你只是为了毕业以后好找工作,待遇好些。这个就稍微能找些实际的参考依据啦,去拉勾网等类似的互联网招聘网站,搜索职位关键词分别看一下对应的职位的数量,比较一下同样的工作经验哪个工资更高。无论你是选择移动端还是we前端还是服务端,只要技术好工资都不低!
还有,新技术相对而言工资是高点,但岗位也少。如大数据,人工智能等这些新技术的岗位也就在一线城市可以搜索到,你学了这些就意味着你必须去北上广深拼搏,否则找不到工作。所以如果你有心仪的奋斗城市,就结合一下该城市的岗位去选择你要学习的技术。
最后,并不是你现在学习了Android开发,工作以后就一定一直做Android。编程技术的变化和发展是很快的,说不定什么时候就被淘汰了;工作后,要根据工作需要学习对应的开发技术。所以最重要的是培养自己学习新技术的能力。而大学期间,最好多学习一些技术,扩展自己的广度,毕业后找工作的选择会多一点。毕竟没有工作的实战场景想提高某一个开发技术的深度是很难的。个人认为,大学期间的学习最大的作用是通过学习不同的技术来寻找真正适合自己的方向。技术深度的提高是在工作的实战中积累的。而提高自己技术广度最好的办法就是自己独立或者和别人合伙,完整一个简单的线上项目,这个过程会让你对很多疑惑豁然开朗!
以上只是小编浅薄的经验之谈,欢迎留言交流!