ccc.jpg

陳鍾誠

[email protected] •  金門/台灣

現職是金門大學資訊工程系助理教授
喜歡用程式案例來上課,而非採用聖經版教科書
目前使用的程式語言是 Python / JavaScript / C
現在持續進行中的專案是 Script1EDA0 

作品


我的專案

1. Mini-RISCV-OS (C 語言) 已完成! 

2. Script1 (C 語言) 初版完成,持續改進中! 

3. EDA0 (Python) 持續改進中! 

4. Blog6 網誌系統 (Node.js) 已廢棄! 

5. Wikidown 維基型網誌系統 (Node.js) 已廢棄! 

6. Rlab 科學計算平台 (JavaScript) 已廢棄!



源碼閱讀筆記

1. C4 編譯器 (C 語言)  

2. xv6 作業系統 (C 語言)  

3. microlisp 微型 LISP 解譯器 (C 語言) 

4. semu 虛擬機 (for RISC-V, C 語言)

5. micrograd 微型深度學習梯度套件 (Python)




代表文章

1. 十分鐘系列投影片 

2. 陳鍾誠的wikidot 

3. 主編並撰寫 程式人雜誌 (2013-2015共兩年) 

4. 專欄文章 -- UDN , CodeData 

5. 陳鍾誠的Medium




感興趣的議題

1. IC 設計 EDA  工具的原理  

2. 如何自製 CPU / 作業系統 / 編譯器  

3. 自然語言機器翻譯 

4. 程式語言/人造語言 設計

5. 人工智慧與深度學習



Skills


前端

通常採用原生的HTML + CSS + JavaScript 實作 Client 端網頁




後端

原本使用 Node.js 搭配 koa 套件 ,2020年後改用 deno 搭 oak 套件來開發 Server 端程式。



資料庫

除了採用 deno 的套件之外,主要搭配 Sqlite / PostgreSQL 進行資料的儲存與查詢。




上線

曾經自己於金門大學內架站,但後來為了上線營運,改將網站架到 Linode 雲端主機


程式語言

目前最熟的四個語言是 Python /  JavaScript / C  還有自己設計的 Script1 。

曾經長期使用過的語言有 C# , C, C++, Java 語言,但最近較少使用 C# 與 Java,不過開發需要快速度的系統程式時還是會採用 C 語言。



工具與套件

目前慣用的工具有 Visual Studio Code, C 語言的 Gcc/Make/gdb , JavaScript 的 Deno, Python 的 PyTorch,版本管理使用 Git/Github 等等。

Experience

2020-現在

1. Mini-RISCV-OS 嵌入式作業系統 (用 C 開發)
2. Script1 程式語言與 S1 轉換工具 (用 C 開發)
3. EDA0 電路 IC 設計布局工具 (用 Python 開發)

2018-2020

1. 網路開店 POS 平台

2. 開發 nn6 神經網路深度學習套件

2016-2017

1. 用 JavaScript/Node.js 開發 scijs 科學計算套件 , j6 數學函式庫

2. 用 JavaScript/Node.js 開發 bookdown 網誌平台。

3. 開發 f6 前端套件

4. 開始用 與 github 完全整合的教學方法

2014-2015

開發 wikidown 維基網誌平台


2011-2013

專注於開放電腦計畫,用 Verilog 設計電腦硬體,從基礎邏輯閘/MUX/ALU/Register/CPU 到整台嵌入式電腦。並用 C/JavaScript 開發組譯器、編譯器、虛擬機與作業系統。

2005-2007

致力於撰寫各項課程教材,並專注於上課教學。

2003-2004

擔任金門技術學院資訊管理系系主任,系務繁忙身兼主任與清潔工,沒有時間寫程式。


2000-2002

1. 努力撰寫博士論文,想辦法畢業,並被老師留下來進行一年博士後研究。

2. 同時也在松下台灣實驗室 (Panasonic Taiwan Laboratory, PTL) 擔任研發工程師。

1998-2000

到大學同學彭振維的加旭科技擔任技術主力,並運用 Foxpro, ASP 等建置造紙廠生產管理系統。最後公司因網路泡沫化資金困難而倒閉。

1996-1998

退伍後到中央研究院資訊科學所許文廉實驗室,主要研究自然語言處理技術,並於1997年開始就讀台大資訊工程所博士班,指導教授為項潔。

1994-1996

服兵役擔任預官,受訓完畢後分發到金門烈嶼擔任少尉排長。

1992-1994

就讀台大資訊工程所碩士,指導教授為高成炎。研究領域主要為人工智慧優化問題,採用模擬退火與遺傳算法進行優化程序。

1988-1992

就讀交通大學資訊科學系。


1985-1988

就讀台北市立成功高中。


自傳

我是陳鍾誠,除了寫程式之外,我也寫小說、書籍、文章與投影片,但是很少寫論文,即使是學術文章也寫成投影片直接發表在網路或 SlideShare 上。


從 0-33 歲的時間,我大部分都在台北度過,大學時期在交通大學資訊科學系就讀,碩博士在台灣大學資訊工程系就讀。30 歲時曾參與加旭科技的創業,後來以失敗倒閉收場。


33 歲之後到金門大學,至今仍在金門大學資訊工程系任教。 我把大部分時間都投入在寫程式、文章、教材上面,並持續於網路上發表這些作品! 2017 年時我已經 47 歲了,但仍然持續撰寫程式、文章與教材。


2016 開始用自己撰寫的 bookdown 系統,是一個書籍撰寫出版平台。


2018 開始撰寫  Pos 網路開店結帳平台,打算進行商業化,但後來沒有持續 ....


2019 開始經常在 github 上 fork 的一些小型原始碼,閱讀後並撰寫筆記,像是 c4 / xv6 / semu / microlisp / micrograd 等等。


2022 年 5 月開始創建 Script1 程式語言,還有其編譯轉換器 S1,S1 可以將 Script1 的程式轉成 JavaScript / Python / Dart ,然後用對應的執行環境,像是 deno / python / dart 去執行。目前 S1 已經可以正常運作,但還在持續修改讓 S1 更好用,並且還在嘗試加入新的目標語言,像是 C++ / 自己定義的中間碼 IR1 / LLVM IR 等等。


2022 年 9 月開始創建 EDA0 這個專案,目標是讓 Python 可以成為一種《硬體描述語言 HDL》,然後利用 Python 去寫 HDL 程式,轉換成電路並跑模擬,然後對轉換後的電路進行優化,從《邏輯式優化 => 元件庫映射 => Placement 到 Routing》等,利用《爬山演算法+蒙地卡羅法》一次優化完畢 (而非分段進行),最後直接產生電路布局繪圖顯示。(不過我們沒和晶圓廠合作,所以暫時不會產生晶圓廠的電路布局)


至於未來嗎?除了教書之外,應該還有無限的可能性,雖然我已經到了成為歐吉桑的年紀了,但是仍然持續撰寫程式,希望能一直寫到 90 歲,或許哪天就會搞出很厲害的系統也說不定! (不過自己玩得開心就很好)