Re: [问卦] 大家都怎么学程式语言的阿(认真)

楼主: freeunixer (御剑客)   2016-12-25 19:49:36
※ 引述《newsted5566 (NEWSTED5566(乱劣我文))》之铭言:
: ※ 引述《swilly0906 (史威利哥哥)》之铭言:
: : 我看了简单的范例/语法
: : 可是实作演练的HW 的超难
: : 到底一开始没有程式背景的朋友是怎么学的阿!!????
: : 要怎么从无到有?
: 鲁宅大学时从没碰过程式…
: 高中学HTML语法就快死掉
: 还发誓未来绝不碰这东西…
: 大一修C语言还被当
: 看到一行一行的程式码就像看天书一样
: 觉得这好可怕这是啥…我死也不要碰这东西
: 而且鲁宅颇推python
: 他真的是一个很适合给程式白痴用的语言
: 很多异想天开的写法他都可以做动!!
讲程式,有些人讲 C,有人讲 C++,有人讲 Java、C#,有人讲 Python,有人讲 PHP...
拎老师今天我给各位上堂课,胡诌一下学语言该从什么开始.
先讲传统的结构式语言.
要先学 C?可以,你要耐得住性子,要能持续三个月到六个月,
最好不间断连续直到看完第一本书.
这种做法适合没有即战力需求的人,缺点是门槛期较长,你得要有恒心.
学 C 的成本低,二手书摊随便找本十年前的二手书都还能用.
找个 Code:Blocker 装 clang,也不太占硬盘(就是比较不好搞就是)
型别、流程、函式、递回、模组先学会,宏、struct 摆第二,指标摆第三
第一本书可以能足以教会你第一部份,但其它部份可能就要再靠其它第二、三、四本...
容易的先搞定,难的后面一个一个慢慢来,你的挫折感比较不会那么大
学 C 有个好处,你对一套软件的关心角度会比较周全,像是要记得内存管理.
对软、硬件的观念会有机会比较全面,所谓的有机会是指,
当你再去看如硬件结构的书,会比较容易懂原来为什么要这样,会那样.
人都不怕底子深,就怕连嘴炮都使不好.
这条路往下去,可以学现在最具工程实务精神的 go.
一样没有 Class,但是有 GC,效能一样在,开发还更快,可以弥补 C 的土炮疲劳度.
讲物件式语言.
直译式
如果想学 javascript 式的多型,可以试着接触看看 rebol,
这是以前从 amiga 上来的.
这套语言超强,十年前就可以支援 async, await.
C#, Java, Javascript 根本看不到它的车尾灯
台湾早期有一个写译软件书有名的 蔡学镛,很推这一套,
他有写了一本书教这套语言 编程ing
卖了四年还卖不完,有兴趣的可以去帮帮忙,
让碁峰一版快卖完,才能给碁峰一点动力叫蔡再改写出二版
从这本书的内容,可以看到他所认为的学习程式的语言,
基础不出我在上面 C 讲的第一部份,
而他那本书也只讲到这一部份,所以之后类与多型的部份,就每天一信催他赶快写...
如果想要学面广弹性大的,可以选 Python.
我虽然还是倾向建议你从 2.x 开始学,但是现在市面上的 2.x 的书不好找.
有本叶难写的 Python 程式设计入门,内容算多,但老实说,内容编排不好,又包太多,
要一个初学者自己去选择哪些要搞会哪些先不用管,实在太折腾.
碁峰 Python初学特训班、松岗 Python程式设计 不妨去翻翻看,喜欢哪本就买哪本
不然就全部带回家.反正也不贵.
Windows 版 IDE,Pyscriper 要装比较麻烦些,要自己到系统设 path,也没有 OS/X 版.
基础的部份比较难搞懂的是 list 的 reference 的观念,
因为这是从 C++ 来的,对比的是 C 的 call by value of address(pointer)
但是 python 都是动态 object 没有寻址,所以比较不容易搞懂.
dict 型别比较复杂,学的时候要动点脑.
模组就显式、隐式汇入, _init__ 初始化, 2.x vs. 3.x 等几种同异,颇烦人.
Class 的部份,最复杂的是多型,跟 Rebol 还有静态型别的 C++/Java/C# 不一样.
静态类的语言,多型在 compile-time 时决定,动态型在 run-time 决定.
Python 的重载与 C++ 类的重载不一样,称之为 duck type,我乱称它为刻板印象定型.
它的多重继承,是优先级继承,而不是全部都能继承.
实例物件、方法物件...一些这种一锅子乱七八糟的东西要搞清楚,颇费功夫.
到了物件、继承这里的时候,要有耐心一天两段式的慢慢推进.多翻几本书,网上教材.
如果想专攻开发网站后台, PHP 7 当然是首选,但是除非你自己也兼刻丑丑的网页,
不然自己一个人搞, HTML、CSS、Javascript...兼太多,容易累死自己...
编译式
C++ 当然是包山包海包你娶妻生子还包到你儿子上台大,但是你很难控制得了...
要讲资源跟使用族群,当然是 Java 胜,但就现状来看,我认为已经可以跨平台的 C#,
是可以投资的对象.
论背景、靠山、架构、功能,C# 都不是普通角色,虽然以前因为只能在 Win 上跑,
大多又只在企业内部使用,限制了它的大众普及性,不过现在可以开始跨平台,
现在学这个,一则可以做为学习静态类多型、继承的敲门砖,二则未来他有成长机会.
很重要的一点是,不必死抱着,今天选了 C#,以后就不能换的心态.
这只是一个开始而已,以后不确定性很大,不用太担心将来会怎样.
学 C# 记得一件事,只买一本 C# 不够,要再买一本 .Net Framework 的书,因为...
所以...
仍是要再提醒,第一个选择什么,并不表示之后不能选择什么.
学过 Python 可以学 C,学过 C# 可以学 Python,学过 go 也可以学 C#,
如果你没想好或不知道将来想干嘛,做签给自己抽,抽到哪个就选哪个,
如果你有比较明确的方向,那当然不要选个跟那个方向差太远的,才不会看来很好笑,
当然,就是还得真的能够时间花下去,每天学,每天写就是了...
作者: LIONDODO (LION)   2016-12-25 19:53:00
这么认真必须含泪推一下
作者: by0413 (误会一场...)   2016-12-25 19:53:00
这篇可惜了
作者: citcal (沉默)   2016-12-25 19:53:00
Python加1
作者: mmaa (蔡菜)   2016-12-25 19:55:00
PHP+1

Links booklink

Contact Us: admin [ a t ] ucptt.com