Julia1.0编程语言浅析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yunxinan/article/details/81806374

目前从网上得知Julia1.0这门语言是上升最热的语言,那么分析一门语言为什么会在短时间会很火爆,首先我们需要查看官方文档来理解基本特性:Julia 语言的官网:https://julialang.org/
Julia 语言项目地址:https://github.com/JuliaLang
通过阅读官方文档的方法和查阅网上资源来了解一门新技术是一种最快速的学习方法,当然如果作为研究人员可能要去阅读论文总结特点和规律这个工作其实还是很有难度的。
首先仅个人看法:
这门语言为什么迅速上升,这个问题回到是python这种函数式编程语言处理矩阵流计算是有很大缺陷,对于矩阵的加减运算和点乘及叉乘是非常占优势,这些语言本身的数据类型为其函数编程之间的操作提供了方便,但是对于浮点运算其实存在缺陷,通常需要kill一个进程来释放不然内存中没法清空导致程序溢出或者计算错误很多。
再者就是回到C、C++、java三种语言,首先C、C++语言之间的差异是C++拥有了bool类型范类技术,这为构造和析构及其泛化做出来突破性贡献,而三者的共同点是都拥有数组这种数据结构操作,数据的操作比比矩阵在内存中更加高效,内存中的矩阵其实大部分是操作矩阵的秩。所以底层或架构性开发工业级都是这些内容。工业界使用技术一般不需要先进、大公司除外,稳定第一。
其实有一种语言我同事应该很熟悉叫scala非常强大的流处理功能,主要能弥补python和C、C++、java处理两个问题的合并方面非常简单。
接下来我们浅谈一下Julia这门语言,前段时间python的作者退出可能也是这么此刻爆发的原因之一。
语言的特点:C语言的速度、Matlab一样的数学表征、python的通用编程、shell命令。
那么我个人的理解这么语言起源类似一个编译组态Octave的设计思想,这个环境是当时最早在coursera上学习Ng老师第一个版本的机器学习课程中学习到的,那时候好像对python并不熟悉。python上当时这门语言在引力波发现上贡献很大,所以我关注的。最早了解有个师兄用R语言解决生物信息技术算法来自spss、sas、matlab等库。
我个人学习计算其实最早上一本叫图解机器学习的日本人书,这本书真心在当时给我很大启发,让我从一个数学建模思想转化到一种思想验证的路上,最早用到的算法书鲁棒算法和退火算法做一个费舍尔判别法的优化用于发达与发展中国家分类。此时感谢我大学的数学建模培训老师杜老师给我很大启发。后来在我学习路上学习到了python科学计算,从一个网页学到一本书真心非常棒,这两个东西主要是给你一种学习或者学术体系,让你的路形成一种知识网络图。
通过阅读相关资料,Juila该语言应该会在短时间解决计算高效性问题,首先这门语言来自MIT的CSAIL的Alan Edelman教授,优势是MIT这种学校培养思维是然所有的产品都是一种精品或者艺术品包括人才和技术。哈佛是比较自由一点,培养发散式突破级天才各有千秋。一种技术其实背后更多是文化,文化不会短时间被代替但是技术永远在更新。
那么从文化分析语言优势,这门语言肯定在后期有一大部分教授团队和学校维护更新相比某些公司的维护更加具有前沿性和稳定性的支持,公司肯定考虑维护成本和更新,但是学界背景出身的语言一般比较有前瞻性同时使用在工业场景应该有诸多挑战。
从网上看这门语言拥有完善的体系,但是侧重点是《数值计算》,这本书其实有空看看很有意思,同时我最近工作发现返璞归真的思想开始阅读小学生和书,它们的书真心很有启发性,最佩服小学生的写书作者思维。工业界很多难题可以用小学生的数学课本解决,不信坚持阅读10万小时小学生的各类数理化书看看,包括偶读读语言的文学。文学是哲学的思想基础,哲学是数学等STEM的基础。以前看过一本小说:一句话深有感悟,当你迷茫时候请教问题的人是小孩、老人。这两类人是两类书,第一类思想与可行性指导(这种方法叫推理与逻辑),第二类经验和考虑问题全面性(这种方法叫归纳法)。现在的小孩很多人学习奥数、心算、IO竞赛、ACM竞赛。这种高强度思考已经开发思维到极致,所以不要看不起小孩子无知,其实它们的思考更加理性更加可行。小孩解决的问题思路方法总结出来可能就是世界级难题的解决方法,在量子力学中N维的问题放到N-1空间解决才能防止概率波奔溃和薛定谔的猫类似。返回来说这门语言特点主要部分肯定是数据结构,那么我们要研究它数据结构类型就懂为啥可以在自动驾驶这种对语言非常的技术都能用Juila,那它的运算机制规律肯定是一种特殊的结构,这是一种过程性不是函数解释性编程特点。平行计算和科学计算说明该语言具有特殊机制可以实现浮点运算的线程同步技术流,该技术是时空转换基础。
这门语言兼容python、R、C/C++、java库使用范围肯定会很广泛,那么这门语缺点也可以看出来目前广泛但是专业程度估计需要后期研究人员参与维护。
总结语言特点:
C语言速度
Ruby语言灵活性
Lisp真实宏
matlab/octave数学符号运算与矩阵
py通用型编程
R计算
perl字符处理
shell胶水性交互
综上特点:该语言拥有交互性和可编译的数理数据结构,可以通过这两个方向来研究这么语言的数据结构更加有助于算法的使用与研究。
这门语言未来可能有的研究根据特点如下:
LLVM多平台编译的本地高效性,快速
多分配范化是的编程模式更加容易实例多对象,便于进程控制和包管理同时便于语言分析,通用
动态型语言具有脚本语言的交互功能,动态
多分配更加擅长并行计算类数组及数组运算,科学计算专业
描述型数据类型是的程序声明清晰便于人类理解接近人类语言,数据类型多样性
数据包组合便于流计算处理,这块python没有scala做得好,组合是一个非常重要的工业技术。
https://docs.julialang.org/en/release-0.7/NEWS/ 特点改进与优缺点分析地址。
一种新技术是一种革命,通常在方案或者技术文件中是 各种动态规划与树,在工业生产实际技术是for循环和分治。编程是一种将想法实现的过程和工具,是一种证明思维和自然客观现象的技术。所以技术永远在进步思维不要被限制是关键。当技术一定程度时候其实阅读量子力学和某些佛学、道学、神学或者哲学更加在一个高层才能突破是一种最强大的自我语言创造。

猜你喜欢

转载自blog.csdn.net/yunxinan/article/details/81806374