站点正在导入数据,暂时处于只读模式:这段时间里无法登录,也不能发帖或回复。

墙内自学编程的一点心得

spellbound

非IT专业,凭自己兴趣自学了编程,现在看来很盲目。就拿rust来说,学习周期长,工作机会又不多,在国内的rust论坛上看了一下求职专区,感觉做的东西都很高大上,估计学rust的本来都是佼佼者,需要懂的东西很多,不比Python只要掌握加一点HTML、CSS就可以开始挣点小钱。还尝试过其他一些语言。凭我粗浅的认识,C语言是最好的,让你接触到很多计算机知识,比如C指针,让你感觉编程不是完全脱离机器虚无缥缈的。写Python则没有什么成就感、学习的时候也没有。倒不是因为复杂学起来才有成就感,只是感觉在搭空中楼阁。C的问题是没有好的初学者资料,rust虽然复杂,但看官网上的教程就能学会,C只有砖头厚的大学教科书,k&r的名著也不适合初学者。而且C现在只有嵌入式和系统开发在用了,也就是说真正在用C挣钱的都是金字塔顶端的。说到linux,shell的基本指令、环境变量,系统配置文件什么的都慢慢清楚了,从刚开始的Ubuntu到可以把Arch从安装到部署使用,期间slackware教会了我很多东西。但遗憾的讲最近几个月都在用MacBook,因为linux是装在旧笔记本上的,总是不知不觉就弃之不用了。个人感觉linux是个好东西,但除了职业码农,坚持用下去很难。如果只有Windows机器应该会坚持使用linux,但macos对普通人来说太简洁好用了。几个月没怎么用linux很多东西都忘了。而linux要真正掌握我感觉得持续使用和学习好几年。

总的来说学习的获得感不强,可能是因为学之前目标不够清楚。让我重新选择利用这些时间,我可能会去选择学习绘画设计甚至EDM电子音乐制作。

2
  1. 差生文具多
    差生文具多

    rust虽然复杂,但看官网上的教程就能学会

    rust是系统编程语言,要用rust写出有实际价值的程序,只学会语言还不够,需要有高并发编程/系统编程的经验。比如很基础的进程通信、锁机制、async/await、socket这些都要掌握,否则单线程下只能写出玩具程序。

    不清楚楼主的学习阶段,楼主可以自己试着实现一个高性能网站后端,或者网络代理协议(比如geph),如果能写出这样的软件,相信很多公司会抢着要人的。

    python也是一门工夫在诗外的语言,python编程不难,难的是应用领域。比如数据科学至少要熟悉numpy、pandas、tensorflow这些包,除此之外还有相应的算法,简单如PCA,复杂如DNN。举个例子,现在的业务需求是训练神经网络,用无人机摄像头识别特定行人并跟踪,那么工程师应该能想到使用哪种技术架构并自己实现之。

    对外部知识依赖最少的领域就是前端HTML+CSS+JS三件套了,不需要懂任何数学或计算机系统知识,就可以写出像样的程序。另外,除了网页前端、APP开发也比较容易上手。绝大多数成功的转码经验都是转到这两个方向的。

    3
  2. leviathan2047
    leviathan2047

    写python跟用软件或是Excel差不多,如果要学计算机的c和c++ 这种比其他有内存回收的可以控制指针,对于数据结构有了解,etc。这样子容易迁移到其他任意一门语言。

    1
  3. 三色鳥
    三色鳥

    学java,一招鲜吃遍天。各种应用场景,各种领域方向,全部可以囊括。

    同时也是效率最高的润方式。一年自学出来就可以投国外公司了。当然语言得过硬。

    1
  4. spellbound
    spellbound

    @三色鳥 <#187742> 在国内投外国公司,然后申请工作签证吗?

  5. 三色鳥
    三色鳥

    @spellbound <#187746>

    对啊,至少日本是没任何问题的,有技术肯定有公司要。

    欧洲、澳洲、加拿大估计也没很难。就美国门槛高点。

    1
  6. spellbound
    spellbound

    @差生文具多 <#187702> 感谢详尽的回复。后端还好说,写一个网络代理协议要懂得东西也太多了吧,geph的作者好像是科班的博士,论文还得过国际大奖。系统编程也挺难的,要理解系统内核。感觉都不是外行通过看点资料自己搞得定的?而且我找到的系统编程和网络协议的教科书、指南比如Stevens的“Unix网络编程”、“unix环境编程”,都是基于C语言的,要学好C语言首先得精通。系统内核、网络协议这些东西包括扎实的C语言基础不在大学本专业里接受持续、高强度的训练很难自己学透彻。

  7. 三色鳥
    三色鳥

    @spellbound <#187752>

    也没那么难,主要是把主机间通信机制搞明白,网络协议栈是基础,数据包加密算法和端口转发要能实现。

    对系统内核有一定了解即可。

    毕竟业务逻辑并不复杂。

    1
  8. 翻墙蟹电脑小白
    翻墙蟹玩网废物

    需要什麼數學基礎知識嗎?個人認為英文好的優勢在於比較容易翻牆和找黃