課程說明
程式語言如何在引擎蓋下工作?編譯器和直譯器之間有什麼區別?什麼是虛擬機器,以及JIT-編譯器?函數語言程式設計和指令式程式設計的區別又是什麼呢?
當涉及到實現一種程式語言時,有太多的問題了!
學校裡的 “編譯器課程 “的問題是,它們通常被表述為一些 “硬核火箭科學“,只適合高階工程師。
此外,經典的編譯器書籍從最不重要的話題開始,比如詞法分析,馬上就深入到形式化語法的理論方面。而到了實現第一個 Tokenizer 模組的時候,學生們就會對這個主題失去興趣,沒有機會真正開始實現一種程式語言本身。而這一切都被分散到整個學期的標記器和 BNF 語法的混亂中,而沒有理解程式語言的實際語義。
我相信我們應該能夠在4-6個小時內建立並理解一個完整的程式語言語義( full programming language semantics ),內容直奔主題,在現場編碼課程中以配對程式設計的方式展示,並以可理解的方式描述。
在 “解釋要點 “課程中,我們特別關注執行時期語義( runtime semantics ),並為一種非常類似於 JavaScript 或 Python的程式語言建立一個直譯器。
https://softnshare.com/essentials-of-interpretation/
同時也有1部Youtube影片,追蹤數超過2萬的網紅Untyped 對啊我是工程師,也在其Youtube影片中提到,什麼是Bug? 她教電腦說人話 編譯器的發明 | Grace Hopper - The Queen of Code【她也懂電腦】#1 - 你知道電腦是怎麼聽懂人話的嗎?你知道編譯器是誰發明的嗎?你知道工程師口中常常講的bug是什麼嗎? Grace Hopper 葛麗絲·霍普 完全就是顛覆大眾對女性的...
「python 編譯器」的推薦目錄:
- 關於python 編譯器 在 軟體開發學習資訊分享 Facebook 的最讚貼文
- 關於python 編譯器 在 Taipei Ethereum Meetup Facebook 的最讚貼文
- 關於python 編譯器 在 91 敏捷開發之路 Facebook 的精選貼文
- 關於python 編譯器 在 Untyped 對啊我是工程師 Youtube 的最讚貼文
- 關於python 編譯器 在 Re: [問題] 新手學習Python的開發環境 的評價
- 關於python 編譯器 在 3 種Python / C++ 線上編譯器 的評價
- 關於python 編譯器 在 #新手Python 的編輯器 - 軟體工程師板 | Dcard 的評價
- 關於python 編譯器 在 用電腦玩生物學, profile picture 的評價
- 關於python 編譯器 在 [討論] 各位前輩有推薦的編輯器嗎- python | PTT數位生活 的評價
python 編譯器 在 Taipei Ethereum Meetup Facebook 的最讚貼文
📜 [專欄新文章] [zkp 讀書會] Cairo 語言介紹
✍️ NIC Lin
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Cairo 是 STARK 證明系統的其中一個編程語言,讓開發者能透過 Cairo 來使用 STARK,撰寫效能更高的 Dapp
Photo by Simon Berger on Unsplash
Warning:本篇會保持在 high level 的介紹,實際深入的部分請見文內附上的文檔或是官方開發者文件
背景介紹
建構於密碼學的零知識證明能提供計算的隱私性,但同時在區塊鏈生態系也被用來提升 Scalability — 我可以用 10 秒的運算資源來驗證原本耗費 1000 秒運算資源的計算過程
如同更多人熟悉的 SNARK,STARK 也是一個零知識證明的證明系統,但當前的 STARK 著重的是在 Scalability ,而非大家比較習以為常零知識證明提供的隱私性特質
其實目前基於 SNARK 的 Rollup 項目,例如 zkSync、Loopring、Aztec、zkopru,除了 Aztec 外,其他都是利用 SNARK 來增加 Scalability — 這些 Rollup 上資料都還是公開、沒有隱私性的
StarkWare 是目前唯一基於 STARK 的開發團隊
STARK 要加上隱私保護不會太難,只是 StarkWare 還沒有把這項功能放在未來規劃中
Cairo 簡介
標榜為圖靈完備的零知識證明系統語言,Cairo 對原本熟悉 Solidity 的開發者來說還是會感到比較難上手和陌生的。再加上套件庫還不夠充足,目前支援的雜湊函式是 Pedersen,數位簽章演算法是 ECDSA(相對於 SNARK,EdDSA 的效能反而比較差所以沒有支援)。
但 Cairo 還在早期開發的階段,相信開發體驗會越來越好的。
另外需要注意的是作為一個證明系統,會有 Prover 和 Verifier 的角色。而 STARK 的 Verifier 是公開的,但 Prover 軟體預計會有 License 保護。Prover 一般情況下不得用於商業用途,除非將 proof 上傳至官方的 Verifier。
最後要提及的是,第一版的 Cairo 是設計來方便開發者將 Dapp 的運算遷移至鏈下。不同於 Rollup,這個鏈下只會有它自己一個 Dapp。這個 Dapp 的項目方自己維護自己 Dapp 的 state。( Rollup 則是 operator 維護所有 Dapp 的 state,Dapp 開發者不需自己操煩)
這可能有點難懂。如果你有在寫 Solidity,想像一下今天你在合約要用到合約裡宣告的 storage 變數時,你要自己提供 merkle proof 上來,證明這個storage 變數真的是這個值。這個就是開發者要自己維護 state 的意思。
而第二版的 Cairo 則是 StarkNet 裡使用的 Cairo(第一和第二版是不同編譯器),這版的 Cairo 就是作為 Dapp 在 Rollup 開發所使用 — 開發者可以在合約裡宣告變數,變數的值不需開發者維護,可以直接假設存在。
註1:StarkWare 不喜歡 Rollup 這個詞,他們覺得 Data Availability 的需求是一段光譜:不一定得要把 data 全都送上 L1,中間有其他方式可以做不同層級的 Data Availability。
註2:第一版和第二版實際上在官方版本裡是 0.0.1 及 0.0.2,在撰文當前最新版即是 0.0.2
官方網站:https://www.cairo-lang.org
開發者文件:https://www.cairo-lang.org/docs/
開發環境
Cairo 有提供像是 Remix 的瀏覽器 IDE:playground。裡面提供各種範例練習和挑戰,除了可以編譯,還可以直接生成並上傳 proof。
註:但有些功能還是沒辦法在 playground 裡使用,例如要給你的程式 custom input 時。這時候只能在本地端開發才能使用這個功能。
開發 Cairo 要先安裝python,我將開發者文件整理出來的資料統整在這個 hackmd 文檔裡:https://hackmd.io/w690dpAQTsKeKZv3oikzTQ
裡面包含簡介、設置本地開發環境以及 Cairo 基礎(因為篇幅原因,所以不將內容複製到這裡)
註:我把開發者文件裡的代碼整理到這裡:https://github.com/NIC619/cairo_practice/tree/master/practices
如果不想在研究開發者文件過程中,還要自己手動拼湊裡面例子的話,可以直接用整理好的代碼來執行。同時 repo 裡還有包含一些額外自己測試 Cairo 功能的範例。
深入 Cairo
在那份 hackmd 文檔裡的開頭,可以連結到第二部分 — 深入 Cairo 的部分。裡面也是從開發者文件裡擷取出來我覺得比較重要的部分。如果你要讀開發者文件的話,我建議從 Hello Cairo 開始,它會從例子切入,會比較好知道 Cairo 怎麼使用。接著如果要更深入了解,再去讀 How Cairo Works。
StarkNet Cairo
第二版的 Cairo 其實功能和第一版的 Cairo 是差不多的,所以不必擔心在開發者文件裡學到的 Cairo 在 StarkNet 版本會不能用或差很多。在讀完 Hello Cairo/How Cairo works 後,就可以接著看 Hello StarkNet。會很順利的切換到 StarkNet 版本的 Cairo。
註1:我整理的文檔裡是按照第一版 Cairo 所寫的
註2:如果你從開發者文件一路看下來,體驗過非 StarkNet 版的 Cairo,那你在體驗 StarkNet 版的 Cairo 時一定會發現這更像一般智能合約的使用方式 — 你可以用 view 函式查詢 storage 變數,可以用 external 函式去執行合約(非 StarkNet 版本不是這樣操作 Dapp 的,這邊因為篇幅原因沒有詳細介紹)。
非常建議嘗試兩種版本的 Cairo,你會知道 1. 操作一個單獨在 L2 的 Dapp 和2. 操作與其他 Dapp 共存在 Rollup 上的 Dapp 的不同。這對了解 L2 怎麼運行、需要哪些資料、為什麼需要這些資料非常有幫助。
0.0.2 版的 StarkNet Cairo 目前還缺少一些功能:
函式還沒辦法宣告陣列或 struct 型態的參數
合約和合約之間還沒辦法互動
L1 沒有辦法讀取到 L2 的資料,L2 也沒辦法讀取到 L1 的資料。如果要建立跨 L2 Bridge,這個功能非常重要。
補充及個人心得
STARK 的 proof size 相比於 SNARK 系列的 proof size 大很多,又其證明所包含的交易數量對 proof size 和驗證時間的影響不大,所以把很多筆交易一併做一個 proof 會是對 STARK 非常有利、節省成本的方式(SNARK、STARK 比較表)。但這同時也是一個缺點,如果你的 Dapp 或 Rollup 的 TPS 不高,那就只能等更久時間搜集多一點的交易,要不然就只能提高成本來維持驗證 proof 的頻率。
StarkWare和 zkSync 一樣都有 Rollup 宇宙的概念( Rollup 宇宙的用詞並不精確,因為在他們的宇宙中不會所有子鏈都是 Rollup,而是會有依照 Data Availability 程度不同所區分的子鏈,像是 Validium、zk Porter 的設計),個人覺得能夠有(針對 Data Availability 程度的)選擇是會比只有一個選擇(完全 Data Available) 還好的方式,但實際上的可行性就要等其團隊釋出更多的資訊。
在 Rollup 越趨成熟的情況下,能夠提供快速跨 Rollup 服務的流動性提供者的角色會越來越重要。zk Rollup(StarkNet、zkSync、etc…)比 Optimistic Rollup (Optimism、Arbitrum、etc…)有著短上許多的 finalize 時間,這對降低流動性提供者的風險有很大的幫助,但目前 zk Rollup 支援合約功能甚至 L1 <-> L2 互動的完成度都比 Optimistic Rollup 還低上許多。短期內快速跨 Rollup 的服務應該還是侷限在 Optimitic Rollup 之間。
abbrev
[zkp 讀書會] Cairo 語言介紹 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
python 編譯器 在 91 敏捷開發之路 Facebook 的精選貼文
看著之前用 PyCharm 重構 Python unit test 示範影片,感覺就好爽。
https://www.youtube.com/watch?v=3giSsoBPEU8&feature=youtu.be&ab_channel=JoeyChen
2020 年的最大感想之一,就是 Python 真是個不錯的語言,相見恨晚。如果開發人員本身就具備如何把產品設計得很乾淨、簡單、嚴謹,那 Python 既可以享受 Java/C# 強型別語言的 IDE 好處(透過 type hint),也可以有動態特性的彈性(例如參數個數、型別的不受限制)。
而且,Python 的測試超級好寫!也可以整理地非常乾淨,就像講話一樣的描述需求情境、規格。
Python 越來越多人在用,很多人(駕駛員問題,而非機體問題)卻濫用它的彈性,寫出很糟糕、很難偵錯、很容易出問題的程式碼。有單元測試當保護網,可以更安心建構 enterprise application 等級的系統,也可以安心的重構,減少缺乏編譯器這一層基本保護的風險。
※ youtube 給他訂閱起來呀!
python 編譯器 在 Untyped 對啊我是工程師 Youtube 的最讚貼文
什麼是Bug? 她教電腦說人話 編譯器的發明 | Grace Hopper - The Queen of Code【她也懂電腦】#1
-
你知道電腦是怎麼聽懂人話的嗎?你知道編譯器是誰發明的嗎?你知道工程師口中常常講的bug是什麼嗎?
Grace Hopper 葛麗絲·霍普 完全就是顛覆大眾對女性的刻板印象的例子。她發明了compiler,在電腦科學領域中有極大的貢獻,被稱為電腦科學之母。若是沒有Grace Hopper, 我們就不會有Java, C++, python 之類的程式語言了!除此之外,還在美國海軍中有很傑出的表現。連美國前總統歐巴馬都頒發給她總統自由勳章。快來聽聽葛麗絲·霍普的驚人事蹟吧!
【她也懂電腦】為響應國際婦女節而啟發的系列。證明電腦科學本不屬於男性專有,打破本不應存在的刻板印象。希望能讓更多人認識這些成就不可被藐視的電腦科學界的女英雄們,讓更多女孩願意擁抱這個也屬於我們的電腦科學世界。
「女性不是電腦科學的外來者,更不是新來的。而我們寫下了電腦科學的歷史,更是使其進步不可或缺的動力。」
#SheInspiresMe #InternationalWomensDay #她也懂電腦 #國際婦女節 #GraceHopper
一定要看到影片最後面並且在「YouTube影片下方」按讚留言訂閱分享唷!
-
感謝各位支持,本頻道破500訂閱了~雖然在YouTube的世界算是非常少,但你們的每一個訂閱跟觀看讚好,我都非常珍惜非常感激!凱心琳我會繼續努力!
#500subs
歡迎留言告訴我你的想法,或是你想認識的厲害女性唷!
每(隔週)週四晚上9點更新,請記得開啟YouTube🔔通知!
-
【相關連結】
The Extraordinary Life of the 'Queen of Code': A Grace Hopper Biography
(https://interestingengineering.com/the-extraordinary-life-of-the-queen-of-code-a-grace-hopper-biography)
Grace Hopper Nanosecond Visual Aid (https://youtu.be/s5XMoLgZZ38)
【What I used to make this video】
個人電腦:Apple MacBook Pro [https://amzn.to/2HKgI2T]
拍攝錄音錄影: iPhone X [https://amzn.to/3c0s6Fu]
相機: Canon 80D [https://amzn.to/2VVmiYz]
錄音: Rode [https://amzn.to/3aqnzL2]
鍵盤: Logitech MX Keys Wireless Keyboard [https://amzn.to/3awqi5L]
【愛屋及烏】
Facebook 臉書粉專 👉 [https://www.facebook.com/untyped/]
Instagram 👉 [[https://www.instagram.com/untypedcoding/]
合作邀約 👉 untypedcoding@gmail.com
-
Untyped 對啊我是工程師 - There are so many data types in the world of computer science, so are the people who write the code. We aim to UNTYPE the stereotype of engineers and of how coding is only for a certain type of people.
凱心琳: 一個喜歡電腦科學邏輯推理,在科技圈努力為性別平等奮鬥的女工程師。
-
This video contains affiliate links, which means that if you click on one of the product links, I'll receive a small commission.
圖片影片音效:[giphy.com] [pngwave.com][freesound.org]
python 編譯器 在 3 種Python / C++ 線上編譯器 的推薦與評價
本篇介紹3 個好用的Python / C++ 線上編譯器,可以隨時來寫C/C++、Python、Java 程式語言等等。要隨時寫程式突然手邊沒有編譯環境,又想測試一下這個 ... ... <看更多>
python 編譯器 在 #新手Python 的編輯器 - 軟體工程師板 | Dcard 的推薦與評價
新手Python 的編輯器. 軟體工程師. 2019年6月30日20:35. 想要利用暑假好好學python 我是看YT教學影片而他是使用visual studio code去寫程式碼由於之前有寫過C,是 ... ... <看更多>
python 編譯器 在 Re: [問題] 新手學習Python的開發環境 的推薦與評價
回答你的問題:
1. Python 是直譯語言, 有一個直譯器, 官方網址 https://www.python.org/,
目前版本是 Python 3.8.3, 下載後約 26.5MB, 內建一個簡單的IDE(稱為IDLE).
2. 你可以只用 IDLE 編寫, 或使用 VS Studio, VS Code, Spyder, PyCharm,
Sumblime Text 3, ATOM, Notepad, Notepad++, etc.. 來編寫 Python Code,沒差別
3. 文字編輯器編輯完後, 可以在有安裝 Python 直譯器的電腦上執行副檔名為.py 的程式.
所以:
1. 幾乎沒有一本書 (至少我沒看過) 內容是用 Visual Studo 201x 來介紹的.
2. 最常見的是介紹使用 Anaconda 和 PyCharm, IDLE, Spyder, IPython, Jupyter.
3. 我個人比較覺得新手用 IDLE 即可. 或是用 VS Code 搭配 IDLE.
4. 書的部份我之前常有介紹. 新書很多我沒看過, 但我個人推兩本:
a. 輕鬆學 Python3 ISBN 978-986-476-602-4
b. Python入門邁向高手之路 (有新的很多不同版)
5. 我自已也有裝 Visual Studio 2019, Installer 內可以帶 Python 3.7.5. 可以去
官網下載新版 3.7.7 後安裝, 它會更新原來的.
6. Microsoft 網站有介紹如何用 VS2019 搭配 Python 寫程式, 內容佷詳細應該足夠.
7. 大家都推用 VS Code 比較多, 我個人也覺得很棒. 除錯比較方便. 只是我用的時候,
輸入中文時有時畫面顯示會有問題, 不知有沒有人有碰到過.
8. 用 VS Studio 如果你習慣了也行, 只是它很大(大概要 3.5GB), 等它開起來我程式
都寫完了. 我通常用小小的 Sublime Text (10M) + IDLE (27M) 開起來很快.
9. 很多書前面的語法大同小異. 買書時主要看你有沒有什麼套件 (Packages) 或用途 (
Machine Learning/Big Data/etc..), 每本書介紹的都不太一樣. 最好挑新一點的.
因為套件一直在更新. Python也有v2和v3的差別, v2快不支援了, 所以太舊旳不建議.
10. 書還是自已覺得看得慣比較好. 我自己有時候是翻兩下就知道這本書我看不下去.
※ 引述《jayzhuang (Jay)》之銘言:
: 各位大大您好~!
: 在下因為換新工作,新公司未來要我學習python相關的東西
: 但小弟是個新手,所以打算買本書來看看。
: 有看到網友與一些人推薦新手可以買看看這本書:
: https://reurl.cc/MvD0lL
: 或是另一本書:
: https://reurl.cc/yZXr32
: 不過我因為以前寫C#的,所以習慣都用Visual Studio(2015、2019)
: 在前公司也是都用VS,目前新公司也都是用VS開發。
: 我自己有實際在我的電腦用VS寫過一點點python的語法
: (單純的命令提示字元顯示那種,但還沒開始很深......)
: 想詢問看看這兩本書的內容,都可用VS環境學習嗎?
: 或是有人有推薦適合新手的python書,可用VS開發學習?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.186.54 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1591029612.A.717.html
... <看更多>