文章目录

  • 前言
  • 一、新手应该怎样选择编程语言?
    • 1、python(就业面比较窄而且职位少、入门编程也不推荐,辅助办公、做论文研究推荐,考研不推荐)
      •    python基础
      •   python发展方向
        •   1. 网络爬虫
        •    2. 数据分析
        •    3. 机器学习
        •    4. Flask
    • 2、Java(正道,就业面宽而且职位多、入门编程也适合、考研不推荐,考研推荐C或者C++)
      •    java基础
      •    java方向
        •   1、JavaWeb
        •   2、android
        •    3、开发电脑端软件
  • 二、避坑
    •   1、考研避坑
    •    2、就业避坑


前言

  本篇文章会讲述本人近一年的学习编程的总结,介绍一些方向性的内容和避免一些坑(和考研、就业相关),也对于python和java做了一些概述,希望能够让大家大概了解这两门语言的特性,以合理选择学习哪门语言,也给出一些优质书籍和资源供读者参考,并借此与那些想要学习编程和刚刚步入编程学习的小伙伴相互交流,也希望大家也能不吝赐教。

一、新手应该怎样选择编程语言?

1、python(就业面比较窄而且职位少、入门编程也不推荐,辅助办公、做论文研究推荐,考研不推荐)

   python基础

  我还记得自己刚开始学习编程的时候,是在大一(本人本科专业是文科类,以至于对于将来的就业没什么安全感,三十学艺嘛。),那时候抱着一本《Python编程:从入门到实践》开始自学python,室友也有一个在学python,但是我俩不搭边,他跟着B站上的资源学习,而我选择看书不看视频。可能是自己比较笨

  花了一个多月看完了《Python编程:从入门到实践》就只能写几个比较简单地if,else之类的,感觉还是没能够入门python这门语言,一些概念性的东西也没能理解,比如return是什么?返回值是什么意思?这也是python比较坑爹的地方,虽然自由简单是python的一大优点,但是自由简单在你接触了java等面向对象语言之后,你会发现自由简单成为你学习其他语言的一大阻碍,也是你继续在python这条路上前进的障碍——“自由简单 = 不规范”。比如程序入口这个概念:

if __name__ == '__main__':

  相信一些学习python的小伙伴都有看过。在其他的语言比如java,这个语句就是

class Test{
	public static void main(String[] args){
		//这里是用来运行的代码
	}
}

  在java或者c这些语言上,你要执行的代码一定是在这个main程序入口之内,否则的话,并不会执行。只学了python的伙伴就可能会用如下1和2的错误写法

class Test{
	public void do_something(){
		System.out.println("Hello World!"); // 这个语句相当于pyhton的print()
	}
	//仅仅运行以上代码是不会有输出的
	//do_something();1、不能这样
	public static void main(String[] args){
		do_something();//只能这样
	}
}
//do_something()2、也不能这样

  python小白不知道这个程序入口是干嘛用的,而懂了这个语句的功能的人也不会去写它,因为pyhton并不强制要求你一定要在这个语句内才能运行,可有可无,没影响,甚至连类的概念也是那样随意,方法不一定在类内,结果我在学习java之前都不太明白为什么要写类,明明不写也可以运行,到需要复用代码的时候也就写一个方法调用,至于类和继承是不会去特意用的。
  关于如何学习python,我的看法是看书自学,一些培训机构疯狂宣传python有多强,其实并没有多强,我甚至不推荐python入门编程,因为你根本入不了门,在去学习java或者C的时候,只会python的你会发现好像都需要重新学一遍一样,当然每个语言都有自己的难点,比如java面向对象,c指针,但是从相似程度来说,python和其他语言差异较大,而且并不适合用来就业和考研(除了一两个院校面试用python,其他的院校大多是都是用C或者C++,java也是不用的!!所以不要觉得学习了python就能考计算机的研究生了,不要觉得会调python的sklean库就觉得自己能考人工智能的研究生了,这也是我之前走过的坑,人工智能只和数学有关系,和python半毛钱关系都没有。)
  python入门我是用了两本书,推荐后一本《Python基础教程》
  第一本《Python编程:从入门到实践》

  第二本《Python基础教程》
  我真正入门是看了这一本书,阅读到前十章也就够了,网络方面python基本用不到。当然理论入门还结合了一些网络爬虫的书籍。

  除了看书以外,编写代码也是很重要的,推荐一个练习题库:
  python利器,一个手机app,里面有python一百例,一题一题练习,是在不会的就跳过,虽然里面的题目都是python2语法的但是不妨碍练习python3,我当时练习完100题之后,发现打代码的速度都快多了,对于后面其他方向的学习也是很有必要的。

  python发展方向

  接下来介绍一下学习python的一些方向(也推荐一些本人看过的也觉得比较好的书籍):

  1. 网络爬虫

(千万别去死扣这个方向,学到能爬爬网页也就够了,不学也行,不是正道,学了就当个小工具。顺便说一句:爬虫对于论文研究收集数据也是有很大作用的。结合python数据分析有奇效)

《精通Python网络爬虫》

《Python网络爬虫从入门到实践》


《实战python网络爬虫》

   2. 数据分析

(这个方向推荐学一学,理由:有助于提升python的运用,也算是一门比较实用的技术,对于做论文研究、职场办公、数据分析师职业都有好处)推荐使用的ide是anaconde的jupyternotebook:

   推荐书目:
  《利用Python进行数据分析》

  《Python数据分析与应用》

  《对比Excel,轻松学习Python数据分析》
  这本书写的也很清晰,对于学习python数据分析也有很大的好处。

   3. 机器学习

(这个绝对是天坑,如果是抱着玩玩的心态可以去学,如果是想着学完这个去应娉什么机器学习算法工程师,那真就是梦做过了头。能够拿到offer的两大类人:一类,机器学习专业名校毕业硕士博士,一类,打比赛打出名了的,第一名第二名四五次这样子的)
因为本人学过《西瓜书》——学习前提需要有《线性代数》、《概率论》、《高等数学》基础,没这基础你看书都看不懂。逻辑链:不懂数学->看不懂《西瓜书》->看不懂《西瓜书》甭想什么机器学习,谁聘你?
还是给玩玩的人推荐一些教程和资料:
慕课网刘宇波老师的《Python3入门机器学习 经典算法与应用 轻松入行人工智能》(虽然轻松入行很夸大,但是这个教程是有真材实料的,学完调库是没问题了,能够参加一些平台的机器学习算法比赛,比如Kaggle、DC竞赛都会举办一些机器学习比赛)
《西瓜书》

然后提一句:人工智能和python没有半毛钱关系,学会了调python的一些库也绝不是你考上名校人工智能专业硕士的资本,甚至可能不会带来任何优势。

  《特征工程入门与事件实践》
  学习人工智能和特征工程有很大关系,甚至可以说对半开或者更多,算法很重要特征工程(也就是数据分析)也很重要,这本书是我觉得说的比较好的一本书了,很清晰。

   4. Flask

(这个是一点点都不推荐,有javaweb…,但是学了也是有帮助的,对于前端后端概念模糊的人,就能够理解前端后端是什么了,前端=界面,后端=代码。在例如android或者javaweb中前端界面的代码和后面的代码是不同的,web前端用的是html5、css之类的,android前端用的是xml,后端用的就都是java了,android也可以用kotlin但我还没学。。。)推荐的ide是pycharm(十分方便,jupyter没有控制台,得自己开一个cmd,而且进入浏览器还得自己复制网址,不方便):

  但是还是给一本好书,给有兴趣的同学一份资料:
  《Flask Web开发实战入门、进阶与原理分析》

这里总结一下python:
  1、有学习价值,如数据分析,爬虫。
  2、不适合就业、考研。

2、Java(正道,就业面宽而且职位多、入门编程也适合、考研不推荐,考研推荐C或者C++)

  学习java是我从大一下开始的,学了很长时间,但是还是依旧菜(抹把眼泪)

   java基础

  推荐书目:
  李刚的《疯狂java讲义》第五版:
  提一句李刚老师的书真的好,不说内容很全面,就是书本错别字都是其他书比不了的少。

  还有一本书作为补充,不过能学习完上一本的同学,我觉得已经够了,不过还是补充一本:
  《java王者归来》

  《Head First Java》不推荐,理由:我感觉读完不能入门,而且厚厚的,还花了我不少时间。。。。不推荐。


  java的量十分巨大,所以在读的过程也要注重上手练习(我学习的经验,不练习只读书根本学不会,过了练习这一关才勉强算会)所以为了有题目练习,我就在csdn上找了一个练习题,适合初学者。
链接放在这里:https://blog.csdn/qiucaijuan/article/details/6650925

   java方向

  说完了java基础,说说学习java的发展方向,我了解到的java方向有是三大方向:

  1、JavaWeb

(我还在打java基础,所以不能给伙伴们更多的信息)

  2、android

  推荐书目
  李刚老师的《疯狂android讲义》第四版:

   3、开发电脑端软件

这个感觉就业比较少,我了解的也比较少,没法给伙伴们更多地建议了。

二、避坑

  1、考研避坑

  1、首先声明,想要考计算机的研究生,值需要学习C或者C++,不需要学习其他编程语言,原因是减轻负担和考研只用这门语言,除非一些特立独行的院校。
  2、python和考研没有半毛钱关系,python和人工智能也没有半毛钱关系,人工智能只和数学有关系,考人工智能的研究生甚至不需要会编程。

   2、就业避坑

1、python绝对不如java的好就业。
2、不要相信那些吹得天花乱坠的培训机构。

看了很多大牛的文章,以后一年一篇总结文章,看看自己的不足,比如今年。
不足之处:
1、java基础还需要夯实!
2、数据分析师技术基础方面需要深造!
3、不清楚自己是否真正热爱编程?我爱吗?我不知道,我只感觉学习编程能让我在身边都是文科生的环境下有优越感,学习编程将来工资会更高,也更感觉的到自己的进步。但是看了那么多程序员几年的复盘文章,我还是不敢确信自己真的热爱这个行业!
4、我不知道要不要考研,考研对我来说最大的阻力就是要不要把大量的时间投入到高等数学,考研英语,考研政治(基本上每天都需要7到8个小时),专业课比如408投入时间是很正确的,毕竟这是编程所必要的知识。
如有错误,请大家不吝赐教,不胜感激。

更多推荐

学习编程Python还是Java?(编程发展方向 和 一些学习编程走过的坑)