最近的学习

发发牢骚
因为忙着找工作,论文的事情还没有着落,最近的压力其实特别大。
前一段时间学的ruby和haskell貌似在简历和找工作上并没有什么立针见影的效果,我不禁质疑自己的学习路线,过度的执着语法层面和一些新锐特性,是否会让自己在编程的路上不能脚踏实地,要说实用性强的语言,C++也是研究生阶段以来一直在用的,可是从前只用到一些小的特性,整体已经有了MFC框架,需要函数,就在类中定义一个,其实更多的是思考如何将算法层面转变成现实的C++程序,以及后续找BUG,内存越界,泄漏的地方,这个其实比较底层,但是技术面试问的也是内存原理,进程线程区别,malloc,free/new delete的区别,数据结构,可能还有一些网络协议的知识,了解这些有助于我们对程序有更好的认识,和把控,老韩说5分钟内面试官就能通过问问题看出来你的水平,我还是不置可否,就像linux的awk,明明已经落伍很久了,问了还有啥意见呢,但是我简历写了,人家碰巧知道的就是这个相关的,好像也不能怪谁。总之,我需要充电一些底层的,原理性的知识,简历也不能给自己挖坑,要更有侧重。

C++的OO,其实就是软件工程灾难的一个复用性解决方案,放到今天来说,无论是java还是c++,都显得过于笨拙,得益于类封装以及框架的设计模式,我们看到的只是一些良好的框架和接口,其实,haskell这些更偏向于原型搭建设计,快速将所需要解决的问题变成编程语言,符合UNIX的设计哲学-小 快 灵,将问题表达成对应的数学建模,加上haskell的数学原生支持,类型系统也能实现更强的多态(morphism),我们每天要解决的问题其实都可以用数学来解决,至于说学到了什么,其实没学到太多基本的,更多的是抽象思维,学习数据在haskell这个语言中的运作,常用算法,标准库,IO,基本上了解这些后就可以自己搭建目标问题的DSL了(也可以理解为一套针对性的解决方案)。一些重要的概念其实在其他语言中也有,C++ 11的STL已经支持匿名函数,函数作为参数的调用,lambda等,可能STL的作者stephanov就是上述C++优势论的比较好的例子吧,他建造的STL其实也可以理解为针对特定数据结构和算法的DSL,内置的allocator,adaptor函数就像机器充电口的USB转接口一样,可以让你自己构造的算法和其他的已有数据结构更好的交互,底层实现其实是模板函数,这也是C++的泛型基础,haskell中也有和shell类似的pipe,ruby可以在运行时自动改变一些数据,这些其实都是多态。
其实内核的运行机制和操作系统,抽象等原理是很重要的基础,我还掌握的不好,机器语言,汇编,是基于冯洛伊曼结构的,这也是最古老的命令式编程。蠕虫病毒等都是基于栈,缓冲区溢出,进程的标志字节,要成为优秀的程序员,基础原理不可或缺。把这些写出来,与大家共勉吧。

你可能感兴趣的:(最近的学习)