系统学习Java和无基础自学python的一些感受

  最近,我在学习JAVA,是跟着培训班系统学习的那种,负责上课的老师也是学校里的老师,不至于像某些培训机构一样那么坑,口碑也很好,我试听了接近一个月也感觉还行。
所以这是一篇软广?显然不是,并不会有人跑到我这里来找一个二本的计算机系的老师培训JAVA。我之所以提这些,是因为我最近想的这些全是在在学习JAVA时想到的。

  一个简单的带登录和验证码识别的爬虫的文章我发了2个月才发完。最初做完这个程(脚)序(本)时,我是非常高兴的,毕竟第一次手上有了一个能用的成品,而不是照着教程敲啊敲那些范例,于是决定发几篇博文水一下。
但由于我懒,在我发完最后一篇的时候已经是10月11日了,与第一篇文章差了整整2个月。在这期间,我在JAVA培训处开始系统的学习一门编程语言。那边照顾到二本大学狗们平日上课全是划水的现实,从最基础的部分开始教起:int、long、if、while……最开始的一个月我完全就是觉得:真尼玛慢!这也用教?
(倒是MOOC上浙大的数据结构把我虐得死去活来)

  这种感受一直持续到了培训班的进度到了面向对象编程为止。并不是说我不知道面向对象编程,python的对象抽象程度远在java之上,廖雪峰的官方网站上的python教程很详细的讲解了类和面向对象,除了元类我实在是理解不能。但一开始接触到这个词的时候,我是完全不明白面向对象编程这个词的意义的,甚至完全是觉得:搞这么个东西出来干啥?函数不好吗?——我那个没有分布式、没有自动续爬、没有代理、没有随机UA、没有数据库、没有多线程、没有迭代遍历的爬本就全是靠函数实现的(起码有了分块思想是吧(笑)),除了用自带的MyHTMLParser模块时,使用了最基础的面向对象知识,此时我的脑中仍然没有任何面向对象的思想。

  而当我开始系统的学习java的类、java的面向对象时,我意识到了面向对象的思想是多么重要而伟大的思想,当我发最后一篇那个爬虫的博文时,我意识到了我之前写的那根本不叫程序,那只是一个300多行代码的脚本罢了。

  我并不是想在这里讨论面向对象思想有多伟大、面向对象开发有多好用、面向对象开发有哪些缺点 ,我暂时没有这个能力,我还没有做过什么有点规模的项目,迄今为止的代码总量估计不超过一千行,这样的我是没有能力和资格来讨论面向对象的。

  我最早接触的语言是VBS,大概是高一时,从某本黑客教程上看到了一点入门教程。玩了2个月左右就弃掉了。
  高二时发现了按键精灵,按键精灵里含有标准VBS库,同时添加了一堆别的插件和命令库,其中的大部分都是为了方便按键精灵模拟键盘或者鼠标按键而准备的。
之后就没有再学习过编程,如果学二本的那种只教到if、while、i++、i–的C语言也算学的话,我还可以说我学过C,呸,我才没那个脸说我学过C……

  也就是说,我勉强算学过的语言,全是简单的脚本语言。VBS有一点点面向对象的成分,然而我显然不可能学到,按键精灵就更不可能了,它就是奔着脚本化去的。

  • 我用这两个东西写过什么呢?
  • 黑客教程上的若干整蛊程序
  • 对某文件夹下的文件批量重命名的脚本
  • 双11时模拟鼠标键盘操作自动抢天猫的网页红包的脚本
  • 一个完全模拟人工操作的的舰女人的自动远征脚本(从没被ban过!虽然我现在已经不玩了)
  • 构建某些一次性使用的复杂(高中级别的)函数,用完后存都懒得存
  • ……

诸如此类的
  里面的各类判定器都是用的按键精灵的颜色判定模块(这个模块模拟人工操作简直完美)。

  这类小东西都有一个共性:面向流程开发。
  几年间我大概写过十几个脚本,其中最长的就是舰女人的那个自动远征脚本,2700多行,这么长完全是因为大量的代码重复和按键精灵自身的某些特性,以及完全的面向流程开发。那个脚本最后结束的几行全是end if。我完全是在暴力模拟人工操作。
  这几年间的面向流程开发的过程使得面向流程开发的思想在我的脑海里根深蒂固,以至于我学完python的基本语法后完全没有理解到面向对象开发意味着什么、有什么用。同时做的第一个程序仍然是一股子面向流程开发的脚本味。

  另一方面,我开始在onenote上摘抄笔记:在java课堂上听的东西先粗略的写在本子上,回去后再靠自己的理解整理、摘抄到onenote上。
  之前有提,我在上java课时想的最多的不是这里java怎样怎样,而是python这里怎样怎样,某天我在onenote上写笔记时,突然想到:我把自己想的那些python的“怎样怎样”也写进去如何,另开一个新分区即可,真好最近沉迷于java,很久没用python了,就当复习一下python吧。

  当我开写之后,问题来了,我发现某些细节我记不太清了,好吧,重新回到廖雪峰的官方网站上去看看。而这一看,我就发现了我之前的那段自学根本不配叫做学习,哪怕是一个list,我之前也漏掉了很多细节,即使是每节的作业我基本都完成了。无基础自学的结果就是这样,其实别人该讲的都讲了,但是没有任何编程基础的人其实根本注意不到某些细节,而一旦自己掌握了一门编程语言后,学其他的语言就会相应的变得容易。

  另外里面某些细节他是默认你懂,略过不讲,而且也没必要在python教程里面讲不相干的内容,比如XML。讲到XML解析的时候,这教程就是默认你懂,结果我就去了W3C学XML。但W3C的XML教程要求先学JS,结果JS教程又要求先学HTML和CSS,我就这么把前端三件套给过了一遍…

廖雪峰的python教程一开始有这么一段

如果你是小白用户,满足以下条件:
- 会使用电脑,但从来没写过程序;
- 还记得初中数学学的方程式和一点点代数知识;
- 想从编程小白变成专业的软件架构师;
- 每天能抽出半个小时学习。
不要再犹豫了,这个教程就是为你准备的!
准备好了吗?

然而根本不是。

知乎上有这么一个问题:为什么看不懂廖雪峰python?
这里写图片描述

认为这个教程对0基础学习者有点跳跃的人不少。
然而这仍然不妨碍廖老师的python教程成为目前最好的中文在线python教程。
(正好现在教我java的老师也姓廖)

  我没有任何婊人的意思,我只是想表示,没有人带路的自学就是这样,以为自己学懂了或者完全懒得深入,事实上连学到皮毛都不算。
当我一边按照java的学习笔记写python的学习笔记,一边重新过一遍廖老师的python教程的时候,我发现了当初0基础自学时的无数漏洞,在面向对象的部分甚至是几乎完全重学了一次。(然而我还是没看懂元类……)

  0基础自学只能学到语法罢了,开发模式、编程思想、数据结构,这些东西才是一个程序员的核心,核心技术过关的程序员切换到另一种语言只需要过一遍语法即可,而一般人自学是难以学习到这些东西的,还好,我现在开始系统学习一门编程语言了,不至于拿着自己拙劣的编程思想写一辈子脚本,复制粘贴一辈子代码。

  废话这么多,我到底想表达什么?胡适说写文章需言之有物,所以我到底想表达什么?
并没有什么想刻意表达的,纯粹是一种面对巨大反差的感想罢了,想自己高中写了几年低级脚本,大二又撸了个爬虫,就觉得自己能写程序了,呸!你也配姓…哦不..你也配说自己会写程序?

  “别废话了,实验室的双螺杆挤出机还等着你去修呢!”
  你说我当初怎么就选了个高分子?

发布了6 篇原创文章 · 获赞 12 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览