对编程语言的思考:尽量在写代码时,去掉OO的范式吧

每年都没有年终总结,今年也没有。
至今已经无业半年,想了很多,却啥都没去实践。
得出的结论是,各种机会必须在实践中寻找,更重要的是,还必须结合自己的优势。
说的难听点,就是一个人不可能在自己不擅长的领域有所发挥。
因为今年找事情时,发现还是被泼了不少冷水,各种路不通。

感慨还是需要继续从技术方向发展
算法不精,又不甘做些低水平的code
原先的实践,没有跟上社会发展潮流,都是过去时。

牢骚至此,发表一些最近的学习状况吧。
从clojure到nodejs到react,然后再回头看以前政务系统的java开发经历。
感觉从前为什么离职的原因也是如此。
虽然是码农,但是对着一大堆自己都提不起精神的代码,真的是种煎熬。

可能我想说去OO,并不是很有说服力,应该本文只是一些自己零散的感悟。
当用这clojure的函数式方式来写web时,感受到世界并不需要OO,只需要机器能够按照我们的想法进行输出即可。
不想要模棱两可的变量,然而不愿谈及macro的强大,自己都还未涉入

当用java写个controller时,需要构建controller,真的是必要吗。一个web路由只需要一个函数不就搞定了吗。
为了构造一个model,然后给予一大堆get,set方法,有必要吗?在多线程情况,数据还是不可控,而imuttable的数据就没有这些问题。

普通的数据真的需要OO话吗,最终的数据scheme都不是在当初数据库设计的时候规范下来了吧,用下imuttable map + 一大堆validation函数不就控制住了?

如stackoverflow就抛弃了.Net的OO,方法都是用static方法来实现。这样子或许是一种可以选择的道路。

至于clojure on android,它的网站阐述了,为什么clojure在android还只是个玩具。因为clojure的内存里小对象太多,受devlik虚拟机限制(我认为是实质上手机的硬件的条件限制吧)。而clojure on android也开发针对这方面开始改善。未来的硬件发展,也将会消除这个问题吧。

相对于clojure的lisp语法,nodejs的函数式更接近平常语言。随便看看也不错,当我看ghost博客源代码时,却是痛苦的,完全没有clojure易读呀。虽然有了promise,消除了一些callback hell,但是不断的then,真是晕的。

对于argular,遗留的java世界的风格,web component的发展也感觉是个很重的东西。反而我更喜欢reactjs+flux。
flux的理念,Dispatch,Action,Store,其实Store实践时可以抛弃OO概念,可以写的更顺畅。
react本身写法就不OO了吧。
如果用clojurescript写react组件也爽。

最近的react native更是抛弃浏览器的各种实现。做自己的engine,包装android和ios的native component。下一步包装桌面端的native也是可能的。

其实用lisp,clojure能实现的,java都能实现,python也都能实现。

很多人说适用就好,其实,我觉得现在这句话是对的,或者未来是错的。语言在发展过程来,我希望在未来是函数式语言的世界,我更希望是lisp的世界。
而我所能做的,仅仅是在OO语言中,尽量不写OO。为啥ES6引入了各种OO,大家真是被OO惯坏了呀。

零散的总结,因为看的东西跳来跳去,到此为止吧。

    原文作者:碎__了
    原文地址: https://segmentfault.com/a/1190000002560019
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞