零基础同学自学编程的正确姿势

Dreamchaser追梦 Dreamchaser追梦     2022-12-04     436

关键词:

编程这件事现在有点热门了,经常能在网上看到有人问该怎么学编程。不用说,问这种题的同学都是对编程没啥经验的,有不少甚至是完全零基础的。

要搞清该怎样学编程,先得问自己一个问题:为什么要学编程?学来想干什么?

道理很简单,因为编程语言五花八门、编程知识丰富浩瀚,专业人员都不可能穷尽,所以要根据目的来选择学习内容。

这个贴子主要是给没打算成为专业程序员的同学看的,所以先看这类人群的学习目的,大部分在网上问如何学编程的同学应该都是这种状态,至少目前一定是(也许学会了之后有可能向专业程序员方向发展)。

这类人群的主要目的,应该是能通过编程提高工作效率,让日常工作更加自动化。确实有相当多日常事务如果使用程序来解决是非常轻松的,而手工去做就非常麻烦,比如把一堆Excel表格合并起来、用花名册生成员工卡片表格等等。街上有很多培训班在鼓吹学完XX语言后工作速度一日千里云云,这当然会令很多职场人士心动。

这种目的,需要学习两层内容:

  • 1.程序的基本逻辑

这是几乎所有程序语言都会有的内容,比如变量、分支、循环等等。不理解这些,几乎是什么程序都不可能写得出来。不过这部分内容并不复杂也不算很多,有Excel公式使用基础的同学,稍加努力就可以学会了。而且,几乎所有程序语言在这方面的能力都很接近,学会一种再去看其它种也很容易,甚至大部分程序语言使用的关键字和语法规则都很像,容易举一反三。

但是,只学会这一层内容,我们只会做一些中小学的算术题,比如解个鸡兔问题、分解个质因数什么的,练练脑筋没问题,对日常工作的协助几乎毫无用处。

不幸的是,面对非专业人员,很多教程书籍甚至培训也只教到这里(或者说只能教到这里,看到后面就明白了)。

要想学以致用,还必须学习第二层内容:

  • 2.结构化数据及其运算

希望编程来解决的日常工作,其实也就是处理手头的数据,而日常工作中面对的数据,绝大多数都是Excel表格或者能填入Excel表格里的数据,这种数据有个学名叫结构化数据。必须要学会结构化数据的概念以及常见运算,比如表、记录、字段、分组、连接等等,懂了这些才可能真正应对日常工作。结构化数据通常都是批量出现的(表格里通常会有很多行数据),这样理解结构化数据时还需要熟悉集合相关的概念和运算。

日常表格数据处理任务都是些啥,可以看这里 http://c.raqsoft.com.cn/article/1611022287740 感受一下。

再说一遍不幸,和第一层基本逻辑会有无数的课程在讲述的情况不同,面向非专业人员的教程很少涉及结构化数据的知识。大概只有数据库开发的同学才会专门去学习这些内容,大概也只有数据库课程才会系统地讲述这些东西。但这玩意儿却是日常工作的基础,而且也没那么难,非专业人员也能掌握。比如你是不是经常用Excel做筛选、汇总甚至也会做连接(这词可能不懂,其实就是VLOOKUP干的活),但没有系统学习的话,碰到复杂些的情况就会糊涂了。

这两层知识都掌握之后,非专业人员就真地可以得心应手地对付日常工作了,工作效率嗖嗖的。

说完非专业人员,再简单说说希望成为专业程序员的同学,其中有两类人群在编程时也是以上面这两层知识为基础的(主要是第二层,第一层是所有程序的基础,就不用说了)。

1.数据科学家

这类人群面对的数据大部分也是结构化数据。当然,数据科学家更重要的任务是做算法建模型,这些工作也是用结构化数据,但涉及的运算和上面讲的表格数据运算不太一样了,一般不会再称为结构化数据的运算了。不过,算法模型的工作量通常只占二到三成,数学科学家的大部分时间都在准备数据,而这个工作主要运用的就是上面说的第二层知识了。

有很多数据科学家只熟悉算法模型,并不太熟悉结构化数据的常规运算,结果准备数据的效率很低(代码写得慢,程序执行也慢),耽误很多时间。掌握结构化数据知识不会让你的模型建得更好,但能让你有更多时间来搞算法。

2.开发行业信息系统的程序员

这大概是最广泛的程序员群体了。这些人天天要折腾数据库,特别是要做报表统计工作的那部分人,全部都是在搞结构化数据。掌握完善的结构化数据知识之后,设计运算和处理的方法要顺手得多。不过,这个人群应该会认真学习数据库知识,也就会把这一课给补上了。

有没有编程人员不需要掌握这第二层知识呢?

有的。反而那些很专业的系统程序员(做操作系统、网络传输),或特定领域的算法工程师(视频音频等),对结构化数据的知识要求比较少。不过,这类人群属于重度编程人员,根本不会来看这个贴子,所以用不着理这群人。
所以,能来看这个贴子的同学,几乎都是需要这两层知识。

知道了该学什么,然后就是怎么学,这里首当其冲的一个问题是,学哪种程序语言?

对于第一层知识,理论上应该选择余地很大,甚至是选什么都可以,因为这是所有程序语言都有的内容。那么只要找哪种程序语言擅长处理结构化数据,这样方便学习第二层知识,而且也可以学以致用。

道理上是这样,但别忘了现在面对的是零基础同学,不能搞出太复杂的环境配置,那同学们会晕掉的。零基础同学需要即装即用,甚至就不用安装更好。

早期(30几年前)机器上都有BASIC语言(我们都是当年学过谭老师那本著名的书),确实是不用安装直接可用的,但是搞不清为什么现在都没有了,也说不清这是进步呢还是退步呢。

现在不需要安装的语言也有,主要有两种,一个是浏览器会都会自带的JavaScript,另一种是有Excel自带的VBA(Office组件都有)。但是,JavaScript功能比较专一,学会了也干不了啥事,没啥意思;VBA好很多,但结构化数据处理的能力也有限。而且关键是,这两种东西虽然免安装,但真要用起来,得理解浏览器和Excel内部的许多概念(专业术语叫做对象),这些东西比程序逻辑本身还难,其实不适合初学者。

有时候很怀念当年的BASIC语言。

满大街都是培训班的Python怎么样?看上去很美。
如果用只来学习第一层知识,Python可以说基本没问题,除了没有象样的中文版会制造一点点小麻烦外,其它基本没障碍,只安装基础功能包并不困难,在开发环境中写代码运行也问题不大。

但如果来学习结构化数据的话,对于大多数非专业选手来讲,可以踏踏实实地说:你就学不会!更谈不上学以致用。

原因有三:

  • Python用来处理结构化数据需要有一个叫pandas的开源包,这东西可不是直接被装进Python安装包的,你得自己再下载安装,过程也没有那么简单了,要配一堆让初学者晕死的东西。当然还可以借助一些第三方的程序来协助安装,但这些第三方程序本身的安装又是个问题,启动起来又有一堆工程环境配置(人家设计出来是做大型应用的)让人不知所措。

  • 关键问题在于,pandas本来就不是为结构化数据设计的,它并不是我们熟悉的表格(一行行数据的集合),而是个矩阵。用来处理结构化数据时,做些过滤合并这些简单运算还好吧,碰到分组有序等复杂一些运算,就会让初学者摸不着头脑了。而且它的设计还不一致,集合就有很多种,各有不同的语法,基本上靠死记硬背,到处找例子,很难举一反三。Python的不适应,这里有更详细的解释http://c.raqsoft.com.cn/article/1601030044610,前面列的那个日常表格数据处理的目录中,有相当一部分问题用python写起来都很困难。

  • 还有调试,你不可能一下子就把代码写对,调试对于学习程序语言也是特别有用的工具。Python开发环境的调试功能本来就不太好,pandas又不是Python的原生内容,调试就更费劲。

Python根本就不是面向非专业人员设计的语言,对于非专业人员来讲,Python的强大和方便,只存在于培训班。把人忽悠去了,学完第一层就结束了。日常工作中能用Python干点活的,基本上都是专业人员了,你很少见到周围有什么人在用Python倒腾Excel(要搞也是简单格式的Excel做简单处理),Python真正的使用者都是重度专业人员(主要是搞人工智能的那群人)。

Python都不行,那其它还有啥?

Java、C/C++这些就不用提了。面向对象本来是个高级玩意儿,不适合初学者去理解;结构化数据处理能力却几乎为0,学了也用不起来;开发环境还搞得很复杂,毕竟这些东西是让专业人员来搞大型软件的,复杂有复杂的道理。

话说有些中学作为计算机启蒙课在教Java,真是匪夷所思。

SQL呢?其实做结构化数据处理还不错。这是一个奇葩,可以不用学第一层而直接跳第二层(所以我们前面都说“几乎”,没说死),不用理解变量循环这些概念也能做出还挺复杂的查询。

SQL的问题是,基本上只能在数据库中运行,而安装配置一个数据库又是个专业的事情了,这又把人挡住了。而且,就算学会了,以后你要算算Excel文件,还得先给倒腾进数据库,烦死个人。

说来说去,都不合适,那岂不是没有了?

老实说,如果看这几个主流的程序语言,真地是这样。这些程序语言都太难了!而够简单的又没什么用。

也正因为如此,虽然编程概念炒得火热,但零基础的非专业人员始终用不起来,不停地有人问该学啥。这事,开再多培训班也没有用,培训班又没有能力去改进或发明程序语言。这本质上是没有米的问题、不是会不会煮的事。

这个世界上大概只有SPL是适合零基础非专业人员的程序设计语言了。

作为程序语言,SPL有完整的程序基本逻辑(第一层知识);SPL全名是Structured Process Language,发明它就是为了对付结构化数据的,其结构化数据处理能力超强,可以说当前程序语言这方面能力最完整的,远远超过Python和SQL。分组连接有序等运算、甚至大数据都不是问题(Python碰到大数据就歇了,SQL碰到有序运算会让人晕死),精心设计的语法易学易通;直接计算Excel文件,还能对着文件执行SQL(SPL提供了SQL大部分能力,学SQL可以不用安装数据库);一键式安装,特色网格代码很容易调试,中英文双语版本,…。还有很重要的,它开源免费!

不过,SPL也不是为了初学者特意发明的,而是为了解决SQL难写和SQL跑不快的问题。但真用起来会发现,它的体系简单易用,很适合初学者来学编程,关键是真能学以致用。

这里有SPL程序设计图书 http://c.raqsoft.com.cn/article/1607914978450 ,其中就有一些可以实用的例程,这里还有更多实用的例程 http://c.raqsoft.com.cn/article/1649301821440 。

学完了SPL,绝大多数日常工作都不在话下了,到乾学院可以找到很多用SPL处理日常数据任务的例子。

如果想把Excel控制得更细致一点,可以再学点VBA,毕竟它是Excel的原生语言,有些本事是外部的程序语言无论如何也没法拥有的。可以用VBA来调用SPL,弥补它结构化数据处理能力不足的问题。

非专业选手,到此就够了。

最后再说说专业选手可能的发展方向:

1.继续搞SPL。

SPL还适合行业应用软件中的计算(其实大部分也是结构化数据计算,而SQL对于复杂运算并不方便,而且有时候就没有SQL可以用),以及大数据计算(这需要学习不少高性能算法,这是真地有点难了)。

2.Python

Python是个面向专业人员的语言,它拥有大量的人工智能算法库,这方面除了MATLAB和SAS这类卖得很贵的东西外,基本上无其它语言可及了。如果立志要当数据科学家,目前看大概率是要来学Python的。

3.SQL

数据库开发还是离不了SQL,虽然它的计算能力不够强,但兼容性好,到处都是。学了SPL后再理解SQL的运算就太容易了。

4.Java,C#

目前行业应用大都是Java和C#开发的(Java更多)。这时候就要理解面向对象的东西了,这是SPL里没有需要再认真学习的内容了。

5.JavaScript

浏览器里的开发主要还是这东西,它的语法很简单,难点在于要理解浏览器和网络本身的很多机制。

6.C/C++

这种资深程序员干的系统级开发的事情,轮不着这个贴子来说了

SPL资料

java基础|使用lambad表达式的正确姿势

前言为跳槽面试做准备,今天开始进入Java基础的复习。希望基础不好的同学看完这篇文章,能掌握lambda表达式,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆。一、什么是lambda表达式Java8是我们使用最广... 查看详情

零基础如何自学软件编程

...么小编就来说说,自学软件编程有什么好的方法。2017零基础如何自学软件编程  1、零基础能学软件编程吗?  很多人在看到it行业的发展前景一片大好,就想也转行去it行业,但是有很多都在担心同一 查看详情

零基础自学编程前需要知道的知识

  你是否适合编程?学习编程后能做什么?如何选择编程语言?有哪些免费的线上学习网站推荐?今天这篇好文将那些自学编程前需要了解和思考的问题都记录下来,希望能给那些刚刚开始或正准备自学编程的朋友们带去一些启发... 查看详情

java基础|使用泛型的正确姿势

前言为跳槽面试做准备,今天开始进入Java基础的复习。希望基础不好的同学看完这篇文章,能掌握泛型,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆。一、什么是泛型泛型,即“参数化类型”。一提... 查看详情

零基础自学编程选哪种语言好?世上最好编程语言推荐

零基础自学编程选哪种语言好,那需要先定义一下你所谓的“好”是什么,说明白这个,才可能做出合适的选择。所以,接下来我根据这个不同的“好”,给出建议。如果你说的好是指:入门难度低即,你想要一门编程语言,可... 查看详情

如何零基础开始自学python编程

0.明确目标我是真正零基础开始学Python的,从一开始的一窍不通,到3个月后成功搭建了一个动态网站(没有用任何框架)。相比于计算机大牛,我更加知道一个小白将会遇到什么坑,遇到哪些难点。我把我... 查看详情

零基础程序员自学编程的6种方法,你知道吗?

随着互联网日趋迅猛,编程已经在我们生活当中无处不在了。众所周知,程序员的工资都很不错,于是越来越多的人,都想加入到编程的行业中来。那么如何加入到程序员的行业当中?PHP从入门到放弃,C语言从入门到放弃,Java... 查看详情

java基础|io流之使用file类的正确姿势

为跳槽面试做准备,今天开始进入Java基础的复习。希望基础不好的同学看完这篇文章,能掌握泛型,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆。一、什么是File类?java.io.File类是文件和目录路径名的... 查看详情

零基础如何学习编程

零基础如何学习编程 心得笔记 自学编程2年来,加过n多群,泡过n多论坛,接触过心怀激情的编程新人,遇到过沉着冷静的技术大牛……编程,吸引了一批又一批的热血青年,或许是为了理想,或许是心中的爱好,不断有... 查看详情

这才是自学前端的正确姿势!(本人亲身经历,9个月拿到拼多多美团京东校招offer)

...xff0c;在此之前只接触过C语言,因此对于前端可谓是零基础,由于网上的学习路径鱼龙混杂,因此在中间自己也踩了一些坑。经过九个月的学习,最终在今年秋招斩获三个大厂的offer,给自己的前端学习之路画... 查看详情

小姐姐牺牲了跟男朋友过七夕的时间,告诉你零基础如何自学编程?

...,但涉及到的知识点却非常多。看到很多朋友想要零基础学习编程,我想说的是,你这个零基础到底基础到什么程度才叫零?如果对编程知识没有一点点基础,或者说对计算机知识没有一点点基础,那你想... 查看详情

零基础怎么自学java?自学java有什么误区?

...来越多。实际上在学习Java编程之前需要先学习一些编程基础。新手往往无非进行系统的学习,主要原因是自己搜集信息较为零散,学习过程中无专业的老师引导,自己会走进一些学习的误区。那么,新手零基础怎... 查看详情

零基础怎么自学java?自学java有什么误区?

...来越多。实际上在学习Java编程之前需要先学习一些编程基础。新手往往无非进行系统的学习,主要原因是自己搜集信息较为零散,学习过程中无专业的老师引导,自己会走进一些学习的误区。那么,新手零基础怎... 查看详情

必须收藏零基础自学python资源大全,学完这些自学python学习资料,找工作不用愁

这是一篇Python入门指南,针对那些没有任何编程经验,从零开始学习Python的同学。不管你学习的出发点是兴趣驱动、拓展思维,还是工作需要、想要转行,都可以此文作为一个参考。在这个信息爆炸的时代,... 查看详情

必须收藏零基础自学python资源大全,学完这些自学python学习资料,找工作不用愁

这是一篇Python入门指南,针对那些没有任何编程经验,从零开始学习Python的同学。不管你学习的出发点是兴趣驱动、拓展思维,还是工作需要、想要转行,都可以此文作为一个参考。在这个信息爆炸的时代,... 查看详情

必须收藏零基础自学python资源大全,学完这些自学python学习资料,找工作不用愁

这是一篇Python入门指南,针对那些没有任何编程经验,从零开始学习Python的同学。不管你学习的出发点是兴趣驱动、拓展思维,还是工作需要、想要转行,都可以此文作为一个参考。在这个信息爆炸的时代,... 查看详情

自学-cad零基础视频教程网站

CAD是一款专业设计应用软件,主要用在环境艺术设计,土木工程,水利工程等专业,用来做效果图、三维设计、平面布置规划设计。问题来了,cad学习起来难吗?对于初学当然是很困难的,操作上难度不大,但很麻烦,需要足够... 查看详情

业余时间零基础自学编程,9个月后我成为一名软件工程师

在这篇文章里,我想分享自己如何在9个月内一边做着全职工作,一边自学编程,从一名小白成长为年薪六位数软件工程师。每当阅读别人的成功故事时,我的第一反应都是查看作者的背景,希望他们的经历和... 查看详情