成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

巴西都發明兩門流行的編程語言了!

新聞
多核和分布式讓編程變得非常麻煩,但是Elixir用函數式編程的不變性和Erlang平臺正好解決了這兩個問題。如果你也有類似的需求,強烈建議關注下這門獨特的編程語言,它也許就是幫助你擊敗競爭對手的秘密武器。

1993年,巴西里約熱內盧天主教大學的三個老師發明了Lua。

圖片圖片

Lua以其簡單性、小尺寸和可移植性,成為嵌入式編程語言之王。

除了游戲這個主戰場之外,Luah還入侵了各種軟件(TeX排版,Neovim,Nginx......),各種硬件(三星的電視、思科的路由器、TI的計算器,羅技的鍵盤......)

Lua的故事可以移步我這篇文章《巴西的編程語言都占領全世界了,中國怎么就不行呢?》

20年后,巴西人José Valim又發明了一個編程語言Elixir。

這個編程語言知道的人不太多,但是很多著名公司都在使用它。

圖片圖片

Elixir特別適合開發分布式、可擴展的、高并發的應用程序。

Discord的CTO在2017年的一篇文章中說道:

Discord 就是 Elixir 的早期采用者, Erlang VM 是我們想要構建的高并發實時系統的完美候選者,過去兩年,系統中的并發用戶數已達到近 500 萬,每秒有數百萬個事件...... 

如果讓我從頭再選擇一次的話,我還會選擇Elixir。

在Stackoverflow 2021年的報告中,在38種編程語言中,Elixir是收入排行第三的編程語言。

Elixir的作者是José Valim(下文簡稱何塞),本科在巴西圣保羅大學讀電氣工程,后來在意大利都靈理工大學拿到碩士學位。

圖片圖片

在意大利時他遇到了現在的波蘭妻子,然后搬到了波蘭。

在發明Elixir之前,何塞已經是著名Web框架Ruby on Rails團隊的核心成員。

圖片圖片

可惜的是Ruby語言在并發,多核的表現不咋滴,沒有解決并發問題的適當工具。

這讓何塞有點沮喪,他不斷研究其他解決方案,直到有一天,它發現了Erlang虛擬機。

Erlang虛擬機已經解決了高并發和分布式的問題,為什么不把Ruby移植上去呢?

但是Ruby的思想和概念和Erlang格格不入,沒法子的何塞最終決定:發明一門新的編程語言Elixir。

在設計上,何塞借鑒了Erlang,Clojure和Ruby的思想。

Erlang :函數式思想、基礎設施

Ruby:優雅的語法、標準庫、命名方式

Clojure :基于協議的多態實現

大家可能覺得一個大牛發明一門新語言是很容易的,其實并非如此。

何塞并不是科班出身,也缺乏編譯器的知識,也得從頭學詞法分析,語法分析......

他看了幾本經典編譯書籍如龍書,更關鍵的是閱讀了Erlang、Ruby、JavaScript等語言的解析器源代碼,然后才開始動手。

即使如此,何塞依然步履維艱,他的第一個Elixir原型非常糟糕,就像迷失在了山洞中的原始人,到處探索。

等到第一個版本發布,已經是兩年以后了。

一門新語言出現以后,如果獲得眾人關注是最難的一步。

在這一點上,何塞充分學習了Rails創始人DHH的營銷能力。

何塞開始走出去,在各種活動上宣傳Elixir,接受各種采訪介紹Elixir,寫各種文章為Elixir造勢。

提到Elixir,就不能不提Web框架Phoenix。

他們像當年的Rails一樣,錄制了一個視頻:在15分鐘內克隆一個Twitter。

圖片圖片

這個視頻引發了不小的關注度,成功地引發了對Elixir和Phoenix的討論,吸引了更多人來使用Elixir。

說到這里,可能大家會問:這個Elixir到底有什么神奇之處呢?

一般來說,我們要開發一個交互很強的Web應用,通常會這么來構建:

圖片圖片

在前端有各種框架和類庫,如React,Vue等,在瀏覽器端處理:

1.數據模型,2.控制邏輯,3.視圖模板 

后端主要提供數據接口,前端的JavaScript負責展示和邏輯。

讓人吃驚的是:使用Phoenix的LiveView,這三個東西都被放到了服務器端,實現了服務器端的渲染。

圖片圖片

猛一看,這很難理解,舉個簡單的例子,我們現在需要實現一個計數器應用:

圖片圖片

在服務器端:

數據模型:就是那個Count數字。

客戶邏輯:就是一些函數,來處理事件,事件是“增加按鈕被點擊”(increment event)或者“減少按鈕被點擊” (decrement event)

視圖模板:用來渲染這個簡單的界面

當用戶點擊“增加”按鈕時,一個事件(increment event)通過websocket發給服務器端。

圖片圖片

服務器端收到后,調用服務器端的相關函數,修改數據模型,給count加一,然后渲染新視圖,再發給瀏覽器。

瀏覽器收到新數據,就會展示出來:

圖片圖片

當然,服務器肯定不會把所有的視圖都發回給瀏覽器,它會做優化,使用狀態跟蹤,diff算法,從而發送最少的數據。

在這個例子中,只需要告訴瀏覽器,那個count的值變了,僅僅更新這個值就可以了。

你可能覺得這種處理方式非常瘋狂:對每個用戶都保存這么多信息,用戶多了該怎么辦啊?怎么擴展啊?

圖片圖片

這就要涉及到Elixir的關鍵了,和其他編程語言不同,Elixir的process(如圖中的Live View Process)并不是操作系統的進程(Process)或者線程(Thread)!

Elixir的process是非常輕量級的,在單臺服務器上可以幾十萬,甚至上百萬個process。

這也正是Erlang平臺的優勢所在!

使用Phoenix的LiveView,在代碼復雜度不高的情況下,就實現了媲美單頁應用良好的用戶體驗,可以說是非常漂亮。

圖片圖片

所以發明人何塞說:Elixir非常適合開發一切運行在socket上應用!

上世紀90年代,你寫一段代碼,放在那里什么也不做,兩年以后,新的硬件就會讓它的性能提升一倍。

現在摩爾定律失效了,CPU走向了多核,系統走向了分布式。

多核和分布式讓編程變得非常麻煩,但是Elixir用函數式編程的不變性和Erlang平臺正好解決了這兩個問題。

如果你也有類似的需求,強烈建議關注下這門獨特的編程語言,它也許就是幫助你擊敗競爭對手的秘密武器。

全文完,覺得不錯的話點個贊或者在看吧!

參考資料:

https://www.youtube.com/watch?v=U_Pe8Ru06fM(本文中LiveView例子的來源)https://www.youtube.com/watch?v=lxYFOM3UJzo

https://www.youtube.com/watch?v=IZvpKhA6t8A

如需轉載,請通過作者微信公眾號coderising獲取授權

責任編輯:武曉燕 來源: 碼農翻身
相關推薦

2025-03-13 00:35:00

2023-02-10 08:58:46

2015-03-18 09:12:43

編程語言云計算云計算編程語言

2012-02-13 10:03:31

編程開發

2014-02-04 19:44:23

編程語言開發

2022-09-07 08:05:32

GScript?編程語言

2021-03-25 16:01:11

編程語言CPU機器語言

2021-03-26 06:00:37

編程語言CPU

2019-09-22 21:05:51

編程語言開發

2019-11-15 14:48:26

編程語言開發者分析

2018-03-13 09:34:30

人工智能編程語言Python

2011-04-27 09:12:14

PHPjavascriptjava

2017-11-14 11:40:18

編程語言數據博客

2022-12-09 00:09:10

編程語言開發人員通信

2023-07-11 08:22:09

2014-10-31 10:04:57

程序員代碼

2019-01-30 12:38:41

JavaScript前端編程語言

2021-01-07 15:01:09

編程語言JavaPython

2014-12-03 09:48:36

編程語言

2021-05-18 06:04:16

編程語言開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线成人| 99精品99久久久久久宅男 | 成人免费大片黄在线播放 | 欧美二级 | av在线免费观看网址 | 黄色免费在线观看网站 | 国产一区二区日韩 | 日韩精品在线播放 | 国产精品精品3d动漫 | 中文字幕精品一区二区三区精品 | 热99在线| 亚洲免费精品一区 | 国产美女视频一区 | 久久综合久色欧美综合狠狠 | 日韩视频国产 | 超碰综合 | 日本一区二区三区在线观看 | 国产高清在线 | 亚洲综合色 | 色欧美片视频在线观看 | 成人老司机 | 欧美在线视频网站 | 欧美日韩综合一区 | 亚洲一区二区av | 亚洲激情视频在线 | 精品视频一区二区三区在线观看 | 日韩精品久久 | 亚洲一区二区三区国产 | 日本久久www成人免 成人久久久久 | 精品一区国产 | 国产精品三级 | 粉嫩粉嫩芽的虎白女18在线视频 | 日韩在线中文字幕 | 午夜视频一区 | 久久久久无码国产精品一区 | 日本成人一区二区 | 亚洲欧美日韩中文在线 | 日韩久久久久久久久久久 | 日韩免费1区二区电影 | 国产欧美精品区一区二区三区 | 日本国产一区二区 |