[爆卦]線上compiler是什麼?優點缺點精華區懶人包

雖然這篇線上compiler鄉民發文沒有被收入到精華區:在線上compiler這個話題中,我們另外找到其它相關的精選爆讚文章

在 線上compiler產品中有4篇Facebook貼文,粉絲數超過3,460的網紅Taipei Ethereum Meetup,也在其Facebook貼文中提到, 📜 [專欄新文章] 2021 區塊鏈開發入門 ✍️ Johnson Chen 📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium 在我大學的時候,除了學習網頁前端之外,因為課程報告的需要接觸到以太...

線上compiler 在 工具王 阿璋 Instagram 的最佳解答

2021-04-04 20:32:18

【#程式教學】「想學會寫程式,必先練此功!」 新手必備✨C語言懶人包✨  大家千呼萬喚的C語言懶人包來啦🤟🏻一起看下去!!!!  1️⃣C語言:入門基本功💪🏻 C語言是個超~強大的程式語言,C語言靈活高效的運算和豐富的功能性,以及可以跨平台使用的特點,成為了近30年來用途最為廣泛的語言。...

  • 線上compiler 在 Taipei Ethereum Meetup Facebook 的最佳解答

    2021-02-04 14:57:33
    有 8 人按讚

    📜 [專欄新文章] 2021 區塊鏈開發入門
    ✍️ Johnson Chen
    📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium

    在我大學的時候,除了學習網頁前端之外,因為課程報告的需要接觸到以太坊(Ethereum),於是開始學寫智能合約,包括它使用的程式語言 solidity。

    工作以後鮮少再碰以太坊的相關技術,直到最近想重新把以太坊學起來,故而決定寫這篇文章,讓初次接觸區塊鏈與智能合約的人更好地進入開發者的世界。這篇文章不只面向開發者,同時也希望能夠給對區塊鏈有興趣的人,指引一條清晰的學習路線。

    關於區塊鏈

    區塊鏈會被廣為人知,無非是因為虛擬貨幣的出現,而虛擬貨幣的鼻祖就是比特幣。在比特幣出現以前,沒有一個能夠在全球網路上通用的數位貨幣;在比特幣出現之後,才真的實現了數位化的貨幣,能夠在全球網路上流通。

    這樣的技術性突破,blockchain 的名字從比特幣白皮書中被萃取出來,而這項技術也被更多人拿去做研發以及創新。

    區塊鏈這項技術的特性可以簡單概括為兩點:去中心化(decentralized)與不可竄改(immutable)。去中心化有程度上的差別,在公共網路上由世界各地的節點共同維護的區塊鏈,去中心化程度較高;相較之下,私人企業開發由特定節點來驗證交易的區塊鏈,去中心化程度較低。

    為什麼是以太坊?

    這年頭區塊鏈三個字大行其道,大部分都是為區塊鏈而區塊鏈的商業炒作。容許我獨斷地說,以太坊才是區塊鏈應用的大門。

    以太坊由全球最大的區塊鏈社群組成,提供一個去中心化的虛擬機器(Ethereum Virtual Machine)來處理「智能合約」,它是一個公共的區塊鏈平台,逛逛以太坊的官網吧!

    智能合約

    在以太坊區塊鏈中有所謂的智能合約,智能合約能夠部屬到以太坊區塊鏈上,合約即程式碼,放到區塊鏈上就不能再更新,只能執行合約上的程式,持有以太幣的人能夠與合約進行交易。把智能合約想像成是一台自動販賣機,把錢(以太幣)投進去,飲料會掉出來(合約上的程式會被執行)。

    在現實生活中,簽訂合約的雙方認為合約有效而且可以被信任,是因為有國家法律來保障,違反合約可能會受到法律制裁;而用以太幣與智能合約互動,認為智能合約可以被信任,是因為智能合約的不可竄改性 — 以太坊虛擬機會毫無偏袒、完全中立、冰冷不帶任何感情地執行智能合約上已經寫好的程式碼。

    建立在智能合約之上的虛擬貨幣

    事實上,以太坊擴大了區塊鏈這項技術的應用層面。回頭想想,比特幣來自區塊鏈技術,某個人若想打造一款同比特幣一樣的虛擬貨幣,就得模仿比特幣去建造一個自己的虛擬貨幣區塊鏈,一個區塊鏈網路要能夠有效運作並非易事,還需要節點、需要靠人挖礦去驗證交易。此時,若使用以太坊的智能合約,撰寫虛擬貨幣需要的程式碼,將合約部屬到以太坊區塊鏈上,叮咚!他就可以發行自己的虛擬貨幣,根本不必再去建造底層的區塊鏈,也不用想挖不挖礦了。

    此時會發現以太坊就像是一個區塊鏈平台,你不需要親手打造區塊鏈網路,即可享有區塊鏈去中心化與不可竄改的特性。與其他智能合約的開發者共同使用以太坊虛擬機 EVM(Ethereum Virtual Machine),在 EVM 上部屬無上限個智能合約。

    以太坊是一項基礎建設,底層區塊鏈幫你架設好,開發者便有更多時間去發想應用到網頁、手機、或物連網設備上,以下是一段簡單的智能合約,該合約創造了一個虛擬貨幣簡稱 MAT…

    直接進入開發領域 — 線上編輯器 Remix

    Remix 是開發智能合約的線上編輯器,進入Remix官網,點選 Create New File 以後,把上方程式碼複製貼上。在左側欄位中有 solidity compiler 的選項,確認一下左側欄第一列顯示的版本,調成 0.7.0 (上方程式碼使用的版本),就可以按下下方 compile 的按鈕,將智能合約「編譯」成 bytecode(給機器讀的語言)。

    接著我們要部屬合約到區塊鏈上,首先到左側欄位點選 DEPLOY & RUN TRANSACTIONS 的選項,可以看到環境是 javascript VM,這是指現在要部屬到的測試用虛擬機。按下下方的按鈕 Deploy 即可將合約「部屬」到 javascript VM 上。成功部屬後,你會發現 ACCOUNT 所持有的以太幣,從 100 變成 99.9999…,我們得知部屬智能合約需要花費一點點以太幣。

    左側下方會有 Deployed Contracts,點開來就會列出合約上可供呼叫的函式,點那些函式就能與剛剛部屬上去的智能合約進行互動了。

    有些函式呼叫會引發交易,所以需要以太幣,有些則不用。在 ACCOUNT 的地方可以展開來,它提供許多的地址 (address),也就是錢包,每個錢包裡面預設給你 100 顆以太幣,試著用那些地址去操作智能合約,你就能慢慢體會什麼是建立在以太坊之上的虛擬貨幣了。

    真正的開發者世界

    實際上開發智能合約只能算是以太坊開發的其中一部分,其他包括以太坊區塊鏈擴容方案、節點驗證等等又是另一個開發領域了,那部份我就沒有研究太多。而智能合約的開發是比較接近應用層面的,透過網頁前端或手機應用程式,與智能合約進行互動,稱作 Dapp(Decentralized App) 的開發,也象徵著網際網路走向 web3.0 的時代。

    學習 solidity 語言,除了看硬生生的官方文件之外,我推薦去玩cryptozombies,我本身就是從這款網頁遊戲中學習這門語言,聽說是連小孩子都能輕易學習的教材。

    除了學 solidity 之外,網路上還有很多方便的開發工具,開發者主要是運用這些工具做測試、自動化部屬、串接前端等等。許多網路上的教學文章會使用 Truffle + Ganache + web3.js 來建置開發環境。但我在這裡推薦另一款開發環境的架構,如果是新手直接從 hardhat 開始也是非常適合的,hardhat 的教學文章寫得清楚完整,本篇文章使用的程式碼也是從 hardhat-hackathon-boilerplate 這個專案而來。hardhat 使用的開發環境是 Waffle + Hardhat + ethers,它幫你把開發環境處理的簡單又舒服,讓開發者可以專注在開發智能合約上。

    OpenZeppelin 是很有名的智能合約套件庫,開發時可以引入它的智能合約。智能合約很講究安全性,稍微沒寫好就可能被駭客鑽漏洞,虛擬貨幣就被盜走了!OpenZeppelin 提供的 SafeMath 很常被引入到專案,對新手來說看 OpenZeppelin 的合約也是很好的學習管道。此外,官方也建了一個學習網站ethernaut,主要在教導如何寫出安全性夠強的智能合約,可惜網站在我寫這篇文章的時間一直處於維修不能用的狀態。

    最後再介紹一款實際上線的智能合約專案:Argent。它是一款運用智能合約來做虛擬貨幣錢包的公司,除了使用他們的錢包之外,也可以看看他們的智能合約是怎麼寫的,感受一下專業的程式碼架構與寫法。

    小結

    這篇文章希望能幫助到想了解區塊鏈這項技術的人,同時也想呈現一個智能合約的開發生態系,你大可以不必花太多力氣去了解密碼學、挖礦、節點、共識機制等等五花八門的專有名詞;反之,你可以專注在智能合約的開發,或回到本質去思考去中心化的用意、以及為什麼不可竄改的特性那麼重要。

    智能合約除了做虛擬貨幣之外,也能夠做投票系統,原本以貨幣為起始點的區塊鏈技術,是智能合約的出現擴大了區塊鏈更具彈性的用途,這圈子需要更多的開發者來探勘這片新大陸。

    尤其鼓勵人文社會科學的人才,無論是哲學、政治、經濟、法律或社會等各方領域,試著撇開人工智慧將主導未來社會的發展路線,與之截然不同的另一種形式:人類社會能否依靠科技的力量,促成彼此之間的合作,創造更有效率的市場、更公平的治理方式?

    延伸閱讀:激進市場(Radical Markets: Uprooting Capitalism and Democracy for a Just Society)

    2021 區塊鏈開發入門 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.

    👏 歡迎轉載分享鼓掌

  • 線上compiler 在 李介介的介入影像 Facebook 的最佳貼文

    2016-04-30 10:10:18
    有 1 人按讚


    [#線上工具] Closure Compiler
    Javascript 的壓縮器 Closure Compiler,除了可將 Javascript 進行壓縮外降低網站流量消耗,還會進行優化與檢測程式中,是否有出錯或問題,並協助改善程式碼,減少bug的發生,而Closure Tools除了有線上版外,也可安裝在自己的主機中

    連結:http://closure-compiler.appspot.com/

    更多好料的設計相關資源:https://goo.gl/Jmgmcj

  • 線上compiler 在 紀老師程式教學網 Facebook 的精選貼文

    2015-06-09 08:44:01
    有 112 人按讚

    [好站分享] GitHub 上的瘋狂 C++ 相關資源清單:Awesome-C++

    逛國外網站這麼久,很少碰到有資源齊全到讓我倒抽一口涼氣的...這個作者對 C++ 很有愛啊~~

    Awesome-C++,是掛在 GitHub 上的一個 C++ 資源清單。收集了 C++ 相關的函式庫、軟體、書籍、文章...還推薦作者覺得也不錯的其它清單。連結如下:

    https://github.com/fffaraz/awesome-cpp

    一旦點進去,你會被裡面滿滿的超鏈結,把你的腎上腺素濃度打到最高... XD。如果您平常工作與 C++ 相關,您絕對不能錯過這份清單。我簡單列出一下這份清單有什麼:

    (以下文長,是寫給英文苦手的讀者看的。英文沒啥問題的朋友,建議直接看原文即可)

    一、函式庫與框架

    * 標準函式庫(Standard Libraries):
    C++ 原生函式庫、POSIX、ISO、GNU 各家出品的標準函式庫都有。

    * 程式框架(Frameworks)
    「框架」比「函式庫」規格大一點。一般來說,「函式庫」幫你把常用的程式寫好,你只要叫用就好了,是一種幫助你加速完工、但並沒帶來任何新功能的一堆程式碼。「框架」則是替原始 C++ 帶來一些令人驚艷的新功能。不過這種分法,並非絕對的。

    * 人工智慧(Artificial Intelligence, AI)相關框架與函式庫
    想要催得動這一坨東西,得有點 AI 背景。否則你可能不知道函式庫提供給你「深先搜尋(Depth-first Search)」與「廣先搜尋(Width-first Search)」這些函數怎麼讓那堆冷冰冰的硬體多一點智慧。

    * 非同步呼叫所使用的事件佇列(Asynchronous Event Loop)
    一般來說,一個程式呼叫另一個程式,「叫人的」得等「被叫的」把事情做完,才能繼續進行下一步。就像一個經理眼睛盯著新手做事、沒辦法回到辦公桌做自己的事一樣,這種模式叫「同步呼叫(Synchronous Call)」。比較好的作法,是你交代完新手該做什麼,就離開回去做自己的事,等新手做完了,再來報告說「我做完了」,這種模式叫「非同步呼叫(Asynchronous Call)」。不過要能做到「非同步」,「叫人者」與「被叫者」之間,得有「事件(Event)」這個機制,讓兩者互相溝通該做的事,以及是否完工。此處提供的,都是讓 C++ 能達成「非同步」機制的函式庫或框架。

    * 音效(Audio)相關框架或函式庫
    這裡放的,都是讓你的 C++ 能做到讀取音效檔(如:mp3),並用程式碼對該檔進行剪輯、混音...等動作的函式庫或框架。

    * 生物(Biology)相關框架或函式庫
    這邊的函式庫,可以讓您用 C++ 比對兩條 DNA 序列相似度有多高,或者從一大堆不同樣本的 DNA 中,找出哪條 DNA 與哪條可能有親緣關係...等。

    * 命令列(Command Line Interface, CLI)相關框架或函式庫
    用這邊的函式庫,可以讓您在命令列跑出一些令人驚艷的效果。如 NCurses 就是一套能在命令列之下,用文字盡量模擬出下拉式選單、按鈕...圖形界面的感覺。

    * 壓縮(Compression)相關函式庫
    讓您不必瞭解檔案壓縮原理,會叫用相關函數就能做到檔案壓縮。

    * 平行處理(Concurrency)相關函式庫
    讓 C++ 也能輕易做到同時處理多件事情的函式庫。

    * 資料結構相關函式庫(Containers)
    提供資料結構內的 B-Tree 與 Hashmaps 等架構,讓 C++ 輕鬆取用。

    * 加密(Cryptography)相關函式庫
    提供加密解密相關函數。

    * 資料庫(Database)相關函式庫
    讓 C++ 可以用幾道命令,輕鬆接取 MySQL、MongoDB...等知名資料庫內的資料。

    * 除錯、測試、效能(Debug)相關函式庫
    雖然原文只用了「Debug」這樣的簡單字眼,但這一區的函式庫包含「單元測試(Unit Test)」、「效能測試(Benchmark)」、「記憶體用量追蹤(Memory Tracking)」等功能的函數。讓您的程式在還沒跑之前,就接受嚴格檢驗,降低發生錯誤的機會。

    * 遊戲引擎(Game Engine)
    提供一些函數,讓您輕鬆讀入 3D 建模軟體(如:Maya, 3D Studio...)做出來的模型與動畫。並在程式內特定事件(如:碰撞)發生時播放。也提供打光(Shading)、物理函數(如:彈跳、碰撞)...等方便的程式供您取用。這些東西讓您在寫遊戲時,能以更快的效率產出結果。

    * 圖形界面(Graphical User Interface, GUI)
    讓您用 C++ 建立漂亮的視窗、對話框、核取框、下拉式功能表...等圖形界面。

    * 圖形(Graphics)相關函式庫
    這部分多與遊戲引擎搭配,提供 2D 圖形處理或 3D 光跡追蹤(Rendering)等「外觀美化」的函數。讓您的遊戲角色或場景,看起來更栩栩如生。

    * 影像處理(Image Processing)相關函式庫
    包含讀入/繪出各式圖檔(PNG、JPG、GIF...)、光學字元辨識、電腦視覺、讀入/播放各式影片(MP4...)等函數。

    * 國際化(Internationalization)相關函式庫
    讓您用 C++ 寫出來的程式,可以輕易支援各國語言(當然,各國語言要事先請翻譯社先翻好,這邊只是提供語系切換的機制)。

    * 行程間通訊(Inter-Process Communication, IPC)相關函式庫
    兩個跑起來的獨立程式(如:兩個執行檔)想在執行過程中交換資料,稱為「行程間通訊」,簡稱 IPC。IPC 雖然不至於難如登天,不過要做到,手續還是很瑣碎的。這邊的函式庫提供好用函數,讓兩個行程交換資料時,變得比較容易。

    * JSON 支援相關函式庫
    JSON 原文是 JavaScript Object Notation。是一種用「純文字」來表示「資料」的方法。如一筆「李大華、35 歲、手機 0937555666」的資料,用 JSON 表示是這樣的:
    [
    Name: "李大華",
    Age: 35,
    Mobile: "0937555666"
    ]
    之後可以讓這樣的資料,流通於瀏覽器與伺服器之間。而 JSON 函式庫,可以快速幫您分析 JSON 表示的資料,將它還原成您要的格式。

    * 日誌(Logging)支援函式庫
    日誌在「系統稽核」中,是很重要的功能。系統得把「什麼人、等級多高、做了什麼事、何時做的、對哪部分做的、從哪個 IP 過來...」忠實記錄下來。萬一系統出事了,我們就能追查可能是誰搞的。類似「監視器」的功能。這部分的函式庫,可以讓 C++ 輕易做到「日誌」功能,您不用傷腦筋日誌功能該怎麼寫,它已經幫您寫好了。您只要會用就行。

    * 機器學習(Machine Learning)相關函式庫
    提供如「類神經網路」、「電腦視覺」等進階函式庫,讓您的 C++ 程式有少量人類視覺與思考能力(真的很少量,請不用有太高期待)。

    * 數學(Math)相關函式庫
    一些線性代數、矩陣運算...等相關數學函數。

    * 多媒體(Multimedia)相關函式庫
    如:影音串流...等相關函數。

    * 網路(Networking)相關函數
    提供各種低階網路協定相關函數。如:TCP/IP、HTTP、點對點傳輸、非同步通訊、以及一些與 Facebook 橋接的相關函數。

    * 物理模擬(Physics)相關函數
    這部分也可以大量用於遊戲程式設計。主要提供一些函數,用來模擬自然界各種物理現象。如水流、風吹、碰撞、彈跳...等。

    * 機器人控制(Robotics)相關函數
    一堆方便你控制或模擬機器人行為的函數。

    * 科學運算(Scientific Computing)
    一些在科學上比較用得著的數學運算。如工程數學、傅立葉分析...等。

    * 腳本語言控制(Scripting)
    包含一些能讓 C++ 與各種腳本語言(JavaScript、PHP、Perl...)橋接的函數。

    * 序列化控制(Serialization)
    首先解釋一下何謂序列化。序列化可以把程式執行到一半的樣子,如數保存於硬碟中,甚至於可以關機。之後可以把序列化的資料「反序列化」,將它「解凍」還原至記憶體繼續跑,就像當初跑到一半被「冷凍」當下再往下執行一樣。這邊提供許多 C++ 序列化的函式庫。

    * 影片處理(Video)
    可以讀入/播放各種影片檔的函式庫。

    * 虛擬機(Virtual Machines)
    這邊提供一些用 C++ 寫出來的「輕量級」虛擬機。所謂虛擬機,是用軟體模擬出硬碟、處理器、記憶體、螢幕,工程師可以在虛擬機內安裝另一個作業系統,就好像安裝作業系統至真實機器一樣。

    * 網頁應用軟體框架(Web Application Framework)
    集合了一些用 C++ 寫出來的 WWW 伺服器、或開發網頁時用得上的函式庫等。

    * XML
    如果你希望教會你的 C++ 程式「讀懂」一個 XML 檔在講什麼,這邊提供了一堆 XML 解析器(XML Parser),方便您分析從遠方伺服器傳來的 XML 檔到底想表達什麼樣的資料。

    * 其它(Miscellaneous)
    一些無法分類的東西,通通塞在這裡。大部分是一些小型的函式庫或 C++ 與其它語言的橋接軟體。

    二、C++ 相關軟體

    * 編譯器(Compiler)
    各類把 C++ 原始碼編成 0 與 1 機械碼的軟體。

    * 線上編譯器(Online Compiler)
    懶得安裝編譯器的話,現在有一堆線上的編譯器。你上傳原始碼,它會編成機械碼後,丟還個執行檔給你下載。

    * 除錯器(Debugger)
    一些有名的 C++ 除錯器。當你的程式無法執行時,可以靠它找出到底錯在哪裡。

    * 整合式開發環境(Integrated Development Environment, IDE)
    IDE 就是把文字編輯器(Editor)、編譯器(Compiler)、除錯器(Debugger)...等軟體整合成一體的軟體。您可以不離開該環境,就能寫碼、編譯、除錯、執行...。

    * 軟體建構系統(Build Systems)
    簡單說,就是把一些瑣碎動作事先安排好、可以在程式碼修改後,下達一條指令(如:「建構!」),就可全自動一條鞭地從編譯、測試、備份、安裝...一口氣完成的系統。

    * 原始碼靜態分析軟體(Static Code Analysis)
    丟入原始碼,可以幫你找出哪段程式可能發生錯誤,或者可能造成效能低下。也能找出完全沒被叫用到的原始碼,提醒您刪除。甚至於可以把您的程式碼重排成符合特定格式,統一多人寫碼風格時很有用。

    三、其它資源

    * API Design 文件
    * 有用文章(Articles)
    * 推薦書籍(Books)
    * 寫碼風格(Coding Style)
    * 演講(Talks)
    * 影片教學(Videos)
    * 有用網站(Web Sites)
    * 有用部落格(Weblogs)
    * 其它 Awesome C++ 姊妹作(Other Awesome Projects)

    四、其它也很棒的清單(Other Awesome Lists)

    能看到這行字的,給您拍拍手!辛苦了!希望今天分享的內容您會喜歡!也請您不吝按讚鼓勵,或分享給您 Facebook 的親朋好友!

你可能也想看看

搜尋相關網站