erlangpython
A. 同时会C、C++、java、C#、PHP、python、Erlang的人可以找什么工作
LZ真厉害,是这些度精通吗,还是说都会一点,要是都精通那找工作还不是手回到勤来的,如果答说是都会一点,那就找个自己最精通的,有兴趣的,一门心思往这边发展,程序员的工资还是挺高的,虽然会累一点,所以说适合什么工作,只有LZ自己知道了,。
B. 如何用程序加载erlang虚拟机
(1)erlang应用程序启动过程中,还可以分阶段启动。
在erlang应用程序的资源文件*.app可以定义分步骤启动。
*.app中的start_phase字段的值可以指定多个参数分别启动
start_phase的调用时机是在start之后调用的。
(2)erlang是一种分布式语言,在启动应用程序时感觉与C/C++/Java/python都有很大的区别,因为没有main函数
其实这是一个已经可以发布的应用程序与非发布式程序的区别。
如果是一个已经发布的应用程序,安装后启动时,还是有main函数的。
类似Java,Java JVM是用C语言开发的,erlang虚拟机也是用C开发的,非发布的应用程序启动,
诸如:application:start(appName),这是在虚拟机里启动的。
erl其实是个shell脚本,在erl脚本中它实际调用的是erlexec,这个程序的入口是erlexec.c。
erlexec的main函数首先解析命令行传入的参数和环境变量,然后寻找beam可执行文件,
然后就通过execv运行Beam虚拟机,erlexec就是个加载器,在这个过程中就会将命令行参数传递给虚拟机中的init进程。
这个时候发现erlang就像是一个操作系统,linux操作系统中也有init进程。
C. 如何理解erlang的分布式和并发
Erlang的并发性能也并非最强过去曾认为Erlang就代表高并发,高并发就代表高性能,同时认为Erlang就只是高并发的代名词。其实,Erlang的并发性能也并非最强。首先Erlang的虚拟机是C写的,其次诸如Haskell、OCaml + JoCaml,以及Python的PyPy,其实都能提供不弱于Erlang的并发能力。
同时Erlang在顺序计算上的性能也不佳,甚至不能超过Python、Lua这类脚本语言(也许是和其本身的特殊性质有关)。所以就更落后于Haskell和OCaml这类可编译的语言。然而即使并发和并行也需要顺序计算,所以单从并发性能上来说,Erlang还不是最强的。
Erlang写的Yaws这个Web服务器,虽然能承受高并发,但性能,尤其是IO性能依然无法与lighttpd、nginx这种C写的Web服务相比——Erlang的虚拟机本身也是C写的。
同时,Erlang本身设计为一个结构化编程语言而非面向对象编程语言。这就令其较难应用更有开发效率的面向对象的项目开发流程和方法。
那么为何Erlang在并发、分布式编程中如此受推崇?我认为因为它本身是并发和并行在语义、处理上的一致,所以它编写此类程序更加方便。同时,它提供的是一个关于并发、并行以及分布式的统一的解决方案,而不仅仅是高并发。它的目的是构建有容错能力、有伸缩性的可靠系统,同时又能最简化编程工作。这就是它的真正的优势。
D. 如何用程序启动erlang虚拟机
(1)erlang应用程序启动过程中,还可以分阶段启动。
在erlang应用程序的资源文件*.app可以定义分步骤启动。
*.app中的_phase字段的值可以指定多个参数分别启动
start_phase的调用时机是在start之后调用的。
(2)erlang是一种分布式语言,在启动应用程序时感觉与C/C++/Java/python都有很大的区别,因为没有main函数
其实这是一个已经可以发布的应用程序与非发布式程序的区别。
如果是一个已经发布的应用程序,安装后启动时,还是有main函数的。
类似Java,Java JVM是用C语言开发的,erlang虚拟机也是用C开发的,非发布的应用程序启动,
诸如:application:start(appName),这是在虚拟机里启动的。
erl其实是个shell脚本,在erl脚本中它实际调用的是erlexec,这个程序的入口是erlexec.c。
erlexec的main函数首先解析命令行传入的参数和环境变量,然后寻找beam可执行文件,
然后就通过execv运行Beam虚拟机,erlexec就是个加载器,在这个过程中就会将命令行参数传递给虚拟机中的init进程。
这个时候发现erlang就像是一个操作系统,linux操作系统中也有init进程。
E. erlang程序怎么调用java程序
1.保留但大幅度简化指针语言保留着C中值和指针的区别,但是对于指针繁琐用法进行了大量的简化,引入引用的概念。所以在Go语言中,你几乎不用担心会因为直接操作内寸而引起各式各样的错误。2.多参数返回还记得在C里面为了回馈多个参数,不得不开辟几段指针传到目标函数中让其操作么?在Go里面这是完全不必要的。而且多参数的支持让Go无需使用繁琐的exceptions体系,一个函数可以返回期待的返回值加上error,调用函数后立刻处理错误信息,清晰明了。3.Array,slice,map等内置基本数据结构如果你习惯了Python中简洁的list和dict操作,在Go语言中,你不会感到孤单。一切都是那么熟悉,而且更加高效。如果你是C++程序员,你会发现你又找到了STL的vector和map这对朋友。4.InterfaceGo语言最让人赞叹不易的特性,就是interface的设计。任何数据结构,只要实现了interface所定义的函数,自动就implement了这个interface,没有像Java那样冗长的class申明,提供了灵活太多的设计度和OO抽象度,让你的代码也非常干净。千万不要以为你习惯了Java那种一条一条加implements的方式,感觉还行,等接口的设计越来越复杂的时候,无数Bug正在后面等着你。同时,正因为如此,Go语言的interface可以用来表示任何generic的东西,比如一个空的interface,可以是string可以是int,可以是任何数据类型,因为这些数据类型都不需要实现任何函数,自然就满足空interface的定义了。加上Go语言的typeassertion,可以提供一般动态语言才有的cktyping特性,而仍然能在compile中捕捉明显的错误。
F. 有学Erlang的吗 大家一起学
我最早使用的语言是Java和Python, 并且一直都对Python充满好感, 我喜欢这种很朴实和高效率的感觉, 但我却最后没有采用Python,原因其实也很简单, 我就是不喜欢缩进语法, 就跟很多人换工作仅仅是为了屏幕更大一点一样, 另外就是有了同样很棒的可选方案, 这就是Ruby, 所以我最终采用了Ruby作为主力编程语言, 同样也为不能使用Python而有一点小遗憾,毕竟Python的健壮性比Ruby好很多,只不过Ruby也一直在进步, 所以这一点无伤大雅
我们都知道,无论是Python还是Ruby,甚至Java, 都是在解决业务层的问题, 属于应用型语言, 以解决业务逻辑为主, 但还有一个领域是系统领域,偏网络层和底层操作,在这一块我一直在寻找一种优雅的方案, C++被我首先给淘汰掉了, C的开发效率太低, Java倒是比较合适, 就是太臃肿,而且缺少系统编程的基因,毕竟它是级开发出身的
最后我选择了Erlang, 因为它在网络层方面表现优秀, 同时容错性和健壮性都很不错, 它的虚拟机是唯一可以跟JVM媲美的, 而且还有OTP的超重量级武器, 几乎可以是通杀网络层应用, 但根据我的总结它有一个硬伤和一个软肋,这一点后面展开,可以说选择Erlang是我目前所知道的方案里面是最优的
直到有一天我了解了Golang, 我知道Golang其实也蛮早的, 大概08年的时候就知道Google在搞一门奇怪的语言, 之后的几年,一直有不少以老莫为代表的人在嘀咕Golang, 其实我一直没太关注,我从ROR中吸取的经验是,成熟度对于商用很重要, 后来基于Golang开发的产品越来越多,让我不得不去研究一下, 这我才知道, 这就是我梦想中的Python, 效率和性能达到了最佳的平衡,对Go了解越多, 就越不愿意用Erlang写代码,主要原因:
1、Erlang的硬伤在于代码的可读性、表现力, 让我来举个小例子, 比如你为你的系统构建一个RESTFUL的接口,我们大致了解一下代码风格,先不说Erlang, 无论是你c/c++/python/ruby/java 出身, 对Go是不是有种很久违的感觉, 为什么说是硬伤? 因为对一门语言来说,语法是不大可能会大幅度变更的, 而且不会出现大的变化, 我不知道有没有人读过《松本行弘的编程世界》,里面阐述的道理很明白, 真正好的编程方式是人去主宰计算机而不是计算机主宰人, 我感觉Erlang就有点主宰我的编程思维的感觉(我的视力本身就不好,它还在不断的扼杀我的眼睛!), 编程首先是门逻辑学,其次是工程学,最后才是数学, 又让我想起吴军的《数学之美》所说的, 人工智能上个世纪一直在走弯路, 期望机器的高度图灵完备, 而忽视人类本身已有的文明,统计归纳的应用
2、Erlang的软肋在于高质量的库少,尽管有不少杀手级应用, 同样Go在这方面也是软肋, 这一点对于一个不到五年的语言有情可原, 但对于一个20多年的语言是不是有点说不过去, 比如你用json解析库,很多人都是从mochiweb这个基本不更新的库中去抽取, 而我认为对于类似json这种东西可以考虑融入到语言标准库中, 因为未来的商业的api化趋势越来越明显,说的难听点 , 一个倚老卖老一个与时俱进,反正我对Golang的库一点也不担心, 目前的成绩易经非常棒了, 远远优于Ruby/Python的前五年, 可参见已有的高质量的库列表
3、Erlang不合群, 这主要体现在跟其他语言的交互性上, 当然这也有深层次的原因, Erlang本身有自己的哲学, 如出错恢复机制, 你融入一个其他语言的东西进去, 这帐就不好算,就好比你硬要让一个喝咖啡的跟一个吃大蒜的坐在一起, 总之你写一个Erlang的port远远比Go复杂, 甚至比Python/Java还要复杂, 这就造成了Erlang在底层编程上效果不是很好, 没法利用linux已有的很多优秀成果,我一直认为Erlang的什么的mysql/pg/oracle驱动都没有必要存在, Erlang一定是一个self-container应用, 你只要用到了其他东西, 根据木桶理论, 你就不敢号称9个9,以系统的眼光看问题, 我觉得一个系统的鲁棒性不能依赖于某一组件, 这也是为什么爱立信本身的Erlang应用并不广泛
4、说说数据类型吧, 我不止听到1个人说Erlang对字符串的处理不有好, 它把string当做list来处理,其实本质上是该这么,但,还是那句话, 违背了面向人的哲学, 应该做一些DSL, 比如Golang里面的 := 就是一个糖衣, 等价于 var xx yyy = zzzz, 大大方便的程序员少敲不少字符, Golang里面对字符转可以说基本和python差不多, slice map函数很强大, 支持lambda条件,虽然Erlang的基本类型很少, 但有很多构造, 所谓构造等价于Golang里面复杂的struct, 也奇怪了,我就是感觉Erlang构造伤眼睛好吗?可能是各种括号的比对的原因吧, 而且我认为这是不必要的, 显然Erlang缺少DSL的基因, 当然跟Erlang出身的年代有关, 我不夸张的说, 自打用Erlang以后我的视力又下降了100度左右, 我不是很喜欢lisp所说的符号也是一种语法, 可能这又跟函数式编程有关吧:形式推导远大于逻辑演绎
5、其实我最不关注的是性能问题, 因为随着摩尔定律, 单位计算单元的性价比会无限高,但Golang既然提出它的性能逼近C, 那我还是提一下吧, 当然, Erlang也还可以, 虽然比Java慢, 但跟Python一个档次吧
6、再谈谈报错机制, 因为Erlang的的报错信息太让人纠结了, 起初以为我不会看出错信息, 后来也使用了Sasl, 还是不够直观,甚至有时要用工具分析crash文件来定位问题,还是跟Erlang的哲学有关, 在Erlang中一切都是并行的, 所以它根本不care是物理哪一行出错, 只跟Actor绑定, 然后告诉你Actor的ID和出错代号, 你自己凭经验去分析吧,这样做的好处是可以很方便定位出并行中出现的问题,但凡事都是相对的, 在这一点上有点纠枉过正,根据我的经验, 绝大部分时候我只希望先给我明确的指出哪一行出错了好吗? 甚至把顺序的backtrace用完整的英文句子打印出来好吗?至于并行中的错误及时在命令式多线程语言中是不常见的,虽然并不是没有, 但遇到错误我再费劲去调试好了, 但并不是所有的逻辑都用并行的思维去定位问题, 我甚至认为, 对于一个系统不完全是并行也不完全是串行,跟好比我们衡量世界不能单纯的唯物也不能完全的唯心一样, 这一点Golang就做了很好的折中, 不需要并行的时候你老老实实的写串行代码, 需要并行的时候也有较复杂的机制来应对, 合乎情理
7、再说说招人吧, 以前招过好几个C出来的人,说实话水平很好, 可以一周就完成一个小组件, libevent用的熟的很,后来我逼人家用Erlang,结果把人家逼走了,至今我还很后悔, 自己的一厢情愿强加在别人身上真是太不合适了,但我招纯Erlang出来的人,可以说比招objc的人还难, 没有人,空谈技术的优雅性首先就是不靠谱的,再看看列表, Golang的活跃度明显比Erlang高很多, 基本逼近Ruby,更重要的是, 我根本不担心Golang的人才,因为只要熟悉Python/C/Ruby/或者C++, 基本可以实现半天入门, 之后就可以噼里啪啦边搜资料边干活了,虽然有足够的深度,但门槛极其平缓,工程人员也可以复用很多已有的知识。 Erlang在这一点其实跟第一点硬伤有关,大部分人学一周都摸不着头脑,不是每个人的抽象思维和世界观都是一样的好吗, 所以函数式编程尽管不比命令式语言起步晚,但始终学的人很少,这就是历史, 对于大部分人, 更希望解决问题,创造价值, 而不是数学来推导去
8、最后我建议, 如果你是玩c/c++的, 现在开始学Golang,是最好的时机, 跟一门靠谱的语言一起成长, 这种感觉非常棒, 你用Erlang折腾1个应用, 用Go恐怕都完成了10个开源项目, 当然,也要结合自己的口味, Golang就是Sublime Text, Erlang就是Emacs
相信自己的判断,相信自己的逻辑, 赢就是赢,输就是输
转载仅供参考,版权属于原作者。祝你愉快,满意哦
G. python与erlang谁更使用
你主要想干什么 两个语言的基本思想不一样的。
个人觉得Python好用点 但是erlang的多线程超强。
如果解决了您的问题请点赞!
如果未解决请继续追问!
H. Erlang元组与列表的区别和联系
最早使用的语言是Java和Python, 并且一直都对Python充满好感, 我喜欢这种很朴实和高效率回的感觉, 但我却最后没答有采用Python,原因其实也很简单, 我就是不喜欢缩进语法, 就跟很多人换工作仅仅是为了屏幕更大一点一样
I. C和Python,Erlang和Haskell问题,怎么解决
C是面向过程的,但是C++是面向对象的,C++比JAVA难学,都说C++如果学得很牛,学JAVA就非常轻松,我没学过C++,直接学的JAVA。
J. RSA加密Erlang和Python之间问题,怎么解决
RSA加密Erlang和Python之间问题,怎么解决
验证码的问题是测试中常见的。基本上有三种方法:版
和研发协商权去掉验证码,或者提供万用验证码。这是比较符合实际且实用的。
如果可以从数据库中获取相应的验证码,那就读取数据库。
验证码识别方法,通过某些中间件去识别验证码,但是成功率不高,这和工作的本质思想相违背,不建议使用。
建议实用1和2.