Ⅰ 自學c語言 零基礎 看什麼書 該怎麼學
《《啊哈C語言:小學生坐在馬桶上都可以讀懂的C語言編程入門書》.zip》網路網盤資源免費下載
鏈接:https://pan..com/s/1aEXrb1oxnRmMWUlafELpfQ
Ⅱ 有哪些比較好的關於編譯原理 操作系統的網路公開課
操作系統:
MIT 6.828
Stanford: Pintos
UCB: Nachos
THU: Ucore
Harvard: OS161
以上均為開源,自己學。
編譯:
UCB CS164,強推
MIT 6.035 OCW上的project是開源的,現在的貌似不開放了
Upenn的PL方面的課程
CMU 15-411
以上所有課程的lecture notes 基本約等於一本好書,並且assignment project均開放下載
還有更多我推了也沒用,畢竟精力有限,很多我自己都沒看完Yesterday was my birthday, so some of my classmates sent me presents. Mother prepared a tea party for me
Ⅲ 怎樣去寫一個編譯器(用C語言寫C語言編譯器),需要哪些知識做鋪墊,可以給一下相關網站和書籍的推薦嗎
寫編譯器重點就是設計並實現一些數據結構和演算法,語言特點太多的話,代碼寫起來不容易,建議你找一個小語言嘗試下,不要一開始就去嘗試成熟語言。否則你會在寫完語法分析程序以後,遭遇到很大的困難。多數人都是在寫語義分析程序的時候,突然發現自己設計的數據結構很爛,後邊越寫越要命。
如果你想入門編譯器的話,那麼可以看《編譯原理與實踐》,整本書先將編譯器理論,然後後邊教你一步步實現c-miuns(c的子集)的編譯器,包括lex,yacc,都在幾千行代碼左右。這本書講的比較簡單易懂一點
也可以學學斯坦福大學的編譯器設計公開課(aiken設計了一個叫cool的語言,專門用來教人寫編譯器),課程地址上面有人給了:Compilers。這門課以前有個實驗環境(據說已經給了,我以前寫的時候還是用的網上一個不完整的實驗環境),把和編譯器知識無關的內容都給你寫好了,你只需要在固定的地方填上你的內容就可以寫出你的編譯器(不要覺得很簡單哦,人家的代碼寫的很精巧的,讀完就發現寫個好編譯器還是很費腦子的),另外,這個實驗環境有個特點,就是在每一步都提供標准程序做對比,你可以在寫完一部分以後就同標准程序對比,及時發現錯誤。這種方式為寫編譯器又提供了很多幫助
先找個小的,慢慢研究,弄懂了整體的結構再說
Ⅳ 編譯原理的公開課
馮老師的水平很高,認真看還是能學點東西的。但是教學不是很生動,看著看著就睡著了
Ⅳ 自學前端,誰有前端學習路線圖嗎
前端自學的話比較辛苦,因為需要強大的自製力抵制各種誘惑,還有有努力學習的上進心、耐心堅持學下去;現在網上很多培訓機構都有免費的視頻教程進行學習,結合視頻,自己多練、多想、不懂就問才是制勝關鍵。
前端完整學習路線
第一階段:
HTML CSS:HTML進階、CSS進階、div css布局、HTML css整站開發。
第二階段:HTML5和移動Web開發
HTML5:HTML5新語義標簽、HTML5表單、音頻和視頻、離線和本地存儲、SVG、Web Socket、Canvas。
CSS3:CSS3新選擇器、偽元素、臉色表示法、邊框、陰影、background系列屬性改變、Transition、動畫、景深和深透、3D效果製作、Velocity.js框架、元素進場、出場策略、炫酷CSS3網頁製作。
移動Web開發:跨終端WEB和主流設備簡介、視口、流式布局、彈性盒子、rem、移動終端JavaScript事件、手機中常見JS效果製作、Zepto.js、手機聚劃算頁面、手機滾屏。
第三階段:HTTP服務和AJAX編程
WEB伺服器基礎:伺服器基礎知識、Apache伺服器和其他WEB伺服器介紹、Apache伺服器搭建、HTTP介紹。
AJAX上篇:Ajax簡介和非同步的概念、Ajax框架的封裝、XMLHttpRequest對象詳細介紹方法、兼容性處理方法、Ajax框架的封裝、Ajax中緩存問題、XML介紹和使用。
AJAX下篇:JSON和JSON解析、數據綁定和模板技術、JSONP、跨域技術、圖片預讀取和lazy-load技術、JQuery框架中的AjaxAPI、使用Ajax實現爆布流案例額。
第四階段:面向對象進階
面向對象終極篇:從內存角度到理解JS面向對象、基本類型、復雜類型、原型鏈、ES6中的面向對象、屬性讀寫許可權、設置器、訪問器。
面向對象三大特徵:繼承性、多態性、封裝性、介面。
設計模式:面向對象編程思維、單例模式、工廠模式、策略模式、觀察者模式、模板方法模式、代理模式、裝飾者模式、適配器模式、面向切面編程。
第五階段:封裝一個屬於自己的框架
框架封裝基礎:事件流、冒泡、捕獲、事件對象、事件框架、選擇框架。
框架封裝中級:運動原理、單物體運動框架、多物體運動框架、運動框架面向對象封裝。
框架封裝高級和補充:JQuery框架雛形、可擴展性、模塊化、封裝屬於傳智自己的框架。
第六階段:模塊化組件開發
面向組件編程:面向組件編程的方式、面向組件編程的實現原理、面向組件編程實戰、基於組件化思想開發網站應用程序。
面向模塊編程:AMD設計規范、CMD設計規范、RequireJS,LoadJS、淘寶的SeaJS。
第七階段:主流的流行框架
Web開發工作流:GIT/SVN、Yeoman腳手架、NPMer依賴管理工具、Grunt/Gulp/Webpack。
MVC/MVVM/MVW框架:Angular.js、Backbone.js、Knockout/Ember。
常用庫:React.js、Vue.js、Zepto.js。
第八階段:HTML5原生移動應用開發
Cordova:WebApp/NativeApp/HybirdApp簡介、Cordova簡介、與PhoneGap之間的關系、開發環境搭建、Cordova實戰(創建項目,配置,編譯,調試,部署發布)。
Ionic:Ionic簡介和同類對比、模板項目解析、常見組件及使用、結合Angular構建APP、常見效果(下拉刷新,上拉載入,側滑導航,選項卡)。
React Native:React Native簡介、React Native環境配置、創建項目,配置,編譯,調試,部署發布、原生模塊和UI組件、原生常用API。
HTML5 :HTML5 中國產業聯盟、HTML5 Plus Runtime環境、HBuilder開發工具、MUI框架、H5 開發和部署。
第九階段: Node.js全棧開發:
快速入門:Node.js發展、生態圈、Io.js、Linux/Windows/OS X環境配置、REPL環境和控制台程序、非同步編程,非阻塞I/O、模塊概念,模塊管理工具、開發流程,調試,測試。
核心模塊和對象:全局對象global,process,console,util、事件驅動,事件發射器、加密解密,路徑操做。
Ⅵ 本人初學iOS開發,跟著Stanford的公開課用Swift做一個計算器,出現Thread 1: signal SIGABRT錯誤
在 XCode 裡面,點 Show the Breakpoint navigator 按鈕,在左下角有一個加號,點加號,然後點 Add Exception Breakpoint 和 Add Swift Error Breakpoint。然後重新編譯執行項目,貼報錯上來。
Ⅶ 如何系統地自學 python
是否非常想學好 Python,一方面被瑣事糾纏,一直沒能動手,另一方面,擔心學習成本太高,心裡默默敲著退堂鼓?
幸運的是,Python 是一門初學者友好的編程語言,想要完全掌握它,你不必花上太多的時間和精力。
Python 的設計哲學之一就是簡單易學,體現在兩個方面:
語法簡潔明了:相對 Ruby 和 Perl,它的語法特性不多不少,大多數都很簡單直接,不玩兒玄學。
切入點很多:Python 可以讓你可以做很多事情,科學計算和數據分析、爬蟲、Web 網站、游戲、命令行實用工具等等等等,總有一個是你感興趣並且願意投入時間的。
廢話不多說,學會一門語言的捷徑只有一個: Getting Started
¶ 起步階段
任何一種編程語言都包含兩個部分:硬知識和軟知識,起步階段的主要任務是掌握硬知識。
硬知識
「硬知識」指的是編程語言的語法、演算法和數據結構、編程範式等,例如:變數和類型、循環語句、分支、函數、類。這部分知識也是具有普適性的,看上去是掌握了一種語法,實際是建立了一種思維。例如:讓一個 Java 程序員去學習 Python,他可以很快的將 Java 中的學到的面向對象的知識 map 到 Python 中來,因此能夠快速掌握 Python 中面向對象的特性。
如果你是剛開始學習編程的新手,一本可靠的語法書是非常重要的。它看上去可能非常枯燥乏味,但對於建立穩固的編程思維是必不可少。
下面列出了一些適合初學者入門的教學材料:
廖雪峰的 Python 教程 Python 中文教程的翹楚,專為剛剛步入程序世界的小白打造。
笨方法學 Python 這本書在講解 Python 的語法成分時,還附帶大量可實踐的例子,非常適合快速起步。
The Hitchhiker』s Guide to Python! 這本指南著重於 Python 的最佳實踐,不管你是 Python 專家還是新手,都能獲得極大的幫助。
Python 的哲學:
學習也是一樣,雖然推薦了多種學習資料,但實際學習的時候,最好只選擇其中的一個,堅持看完。
必要的時候,可能需要閱讀講解數據結構和演算法的書,這些知識對於理解和使用 Python 中的對象模型有著很大的幫助。
軟知識
「軟知識」則是特定語言環境下的語法技巧、類庫的使用、IDE的選擇等等。這一部分,即使完全不了解不會使用,也不會妨礙你去編程,只不過寫出的程序,看上去顯得「傻」了些。
對這些知識的學習,取決於你嘗試解決的問題的領域和深度。對初學者而言,起步階段極易走火,或者在選擇 Python 版本時徘徊不決,一會兒看 2.7 一會兒又轉到 3.0,或者徜徉在類庫的大海中無法自拔,Scrapy,Numpy,Django 什麼都要試試,或者參與編輯器聖戰、大括弧縮進探究、操作系統辯論賽等無意義活動,或者整天跪舔語法糖,老想著怎麼一行代碼把所有的事情做完,或者去構想聖潔的性能安全通用性健壯性全部滿分的解決方案。
很多「大牛」都會告誡初學者,用這個用那個,少走彎路,這樣反而把初學者推向了真正的彎路。
還不如告訴初學者,學習本來就是個需要你去走彎路出 Bug,只能腳踏實地,沒有奇跡只有狗屎的過程。
選擇一個方向先走下去,哪怕臟丑差,走不動了再看看有沒有更好的解決途徑。
自己走了彎路,你才知道這么做的好處,才能理解為什麼人們可以手寫狀態機去匹配卻偏要發明正則表達式,為什麼面向過程可以解決卻偏要面向對象,為什麼我可以操縱每一根指針卻偏要自動管理內存,為什麼我可以嵌套回調卻偏要用 Promise...
更重要的是,你會明白,高層次的解決方法都是對低層次的封裝,並不是任何情況下都是最有效最合適的。
技術涌進就像波浪一樣,那些陳舊的封存已久的技術,消退了遲早還會涌回的。就像現在移動端應用、手游和 HTML5 的火熱,某些方面不正在重演過去 PC 的那些歷史么?
因此,不要擔心自己走錯路誤了終身,堅持並保持進步才是正道。
起步階段的核心任務是掌握硬知識,軟知識做適當了解,有了穩固的根,粗壯的枝幹,才能長出濃密的葉子,結出甜美的果實。
¶ 發展階段
完成了基礎知識的學習,必定會感到一陣空虛,懷疑這些語法知識是不是真的有用。
沒錯,你的懷疑是非常正確的。要讓 Python 發揮出它的價值,當然不能停留在語法層面。
發展階段的核心任務,就是「跳出 Python,擁抱世界」。
在你面前會有多個分支:科學計算和數據分析、爬蟲、Web 網站、游戲、命令行實用工具等等等等,這些都不是僅僅知道 Python 語法就能解決的問題。
拿爬蟲舉例,如果你對計算機網路,HTTP 協議,HTML,文本編碼,JSON 一無所知,你能做好這部分的工作么?而你在起步階段的基礎知識也同樣重要,如果你連循環遞歸怎麼寫都還要查文檔,連 BFS 都不知道怎麼實現,這就像工匠做石凳每次起錘都要思考錘子怎麼使用一樣,非常低效。
在這個階段,不可避免要接觸大量類庫,閱讀大量書籍的。
類庫方面
「Awesome Python 項目」:vinta/awesome-python · GitHub
這里列出了你在嘗試解決各種實際問題時,Python 社區已有的工具型類庫,如下圖所示:
vinta/awesome-python
你可以按照實際需求,尋找你需要的類庫。
至於相關類庫如何使用,必須掌握的技能便是閱讀文檔。由於開源社區大多數文檔都是英文寫成的,所以,英語不好的同學,需要惡補下。
書籍方面
這里我只列出一些我覺得比較有一些幫助的書籍,詳細的請看豆瓣的書評:
科學和數據分析:
❖「集體智慧編程」:集體智慧編程 (豆瓣)
❖「數學之美」:數學之美 (豆瓣)
❖「統計學習方法」:統計學習方法 (豆瓣)
❖「Pattern Recognition And Machine Learning」:Pattern Recognition And Machine Learning (豆瓣)
❖「數據科學實戰」:數據科學實戰 (豆瓣)
❖「數據檢索導論」:信息檢索導論 (豆瓣)
爬蟲:
❖「HTTP 權威指南」:HTTP權威指南 (豆瓣)
Web 網站:
❖「HTML & CSS 設計與構建網站」:HTML & CSS設計與構建網站 (豆瓣)
...
列到這里已經不需要繼續了。
聰明的你一定會發現上面的大部分書籍,並不是講 Python 的書,而更多的是專業知識。
事實上,這里所謂「跳出 Python,擁抱世界」,其實是發現 Python 和專業知識相結合,能夠解決很多實際問題。這個階段能走到什麼程度,更多的取決於自己的專業知識。
¶ 深入階段
這個階段的你,對 Python 幾乎了如指掌,那麼你一定知道 Python 是用 C 語言實現的。
可是 Python 對象的「動態特徵」是怎麼用相對底層,連自動內存管理都沒有的C語言實現的呢?這時候就不能停留在表面了,勇敢的拆開 Python 的黑盒子,深入到語言的內部,去看它的歷史,讀它的源碼,才能真正理解它的設計思路。
這里推薦一本書:
「Python 源碼剖析」:Python源碼剖析 (豆瓣)
這本書把 Python 源碼中最核心的部分,給出了詳細的闡釋,不過閱讀此書需要對 C 語言內存模型和指針有著很好的理解。
另外,Python 本身是一門雜糅多種範式的動態語言,也就是說,相對於 C 的過程式、 Haskell 等的函數式、Java 基於類的面向對象而言,它都不夠純粹。換而言之,編程語言的「道學」,在 Python 中只能有限的體悟。學習某種編程範式時,從那些面向這種範式更加純粹的語言出發,才能有更深刻的理解,也能了解到 Python 語言的根源。
這里推薦一門公開課
「編程範式」:斯坦福大學公開課:編程範式
講師高屋建瓴,從各種編程範式的代表語言出發,給出了每種編程範式最核心的思想。
值得一提的是,這門課程對C語言有非常深入的講解,例如C語言的范型和內存管理。這些知識,對閱讀 Python 源碼也有大有幫助。
Python 的許多最佳實踐都隱藏在那些眾所周知的框架和類庫中,例如 Django、Tornado 等等。在它們的源代碼中淘金,也是個不錯的選擇。
¶ 最後的話
每個人學編程的道路都是不一樣的,其實大都殊途同歸,沒有迷路的人只有不能堅持的人!
希望想學 Python 想學編程的同學,不要猶豫了,看完這篇文章,
Just Getting Started !!!
Ⅷ 牛津大學如何講授編譯原理
pps上好像有公開課
Ⅸ 推薦幾個學習C++語言好的網站呢
BBS 水木清華站
一些同學問我,如何學好C++,我沒有別的辦法給你們,唯一的辦法就是讀書,讀大
量的書,就可以解決。要把C++作為日常語言,而不是一種程序語言,這樣就好辦了。
有人又要問我,那麼我應該讀什麼書才好?沒有時間怎麼辦?
我只能對你們說,沒時間的話,就別學C++了,做你們喜歡做的事。生活中沒有
C++,也同樣美好。
如果你准備學,一定要學好,那麼我開個書單,應該問題不是甚大。
首先肯定要讀一讀Bjarne Stroustrup的The Design and Evolution of C++,了解
一下這個語言的歷史。接下來就可以看別的書了,但要不停地回頭看這本書,看到
你不斷地學到的新技術是怎麼樣一點點地被接納到這個語言中去的。
第一本書因人而異,基礎好一些的,可以看Stanley B. Lippman的C++ Primer,這
本書非常地巨大,你打星號的部分可以不要看。基礎不太好的,可以看Stanley B.
Lippman的Essential C++,這本書份量要輕得多,不過四個C++的范型都講了,而
且講得非常清楚。
第二本應該停止技術層面的東西,靜下心來看看Pike和Kernighan的The Practice
of Programming,好好地整理一下,在程序設計中應該有哪些注意的事項。這本
非常薄的booklet,可以說是程序員必讀的指南。
第三本書,就應該是Bruce Eckel寫的、候捷譯的Thinking in C++,這本書每過
半年我就要重讀一遍。可以說每一章都是寫得發人深省的,這本書讓我感覺到了
技術運用的非常高的境界,但是語言非常平實,只要認真地讀,即使基礎不行,
也一定可以懂。我在教課的時候,就是用這本書(面對的學生是零基礎)。
要更上一層的話,就要慢一步,先要把握C++設計習慣的良好。這是Scott
Meyers的Effective C++和More Effective C++帶給我們的無盡收益。我More
Effective C++買不起,只好花了10塊錢復印裝訂了一本"線裝本",看起來像葵花
寶典(;-))。這兩本書是真正的經典,作者對C++的純熟,使得語言的風格讀起來
簡直是如飴甘甜,就像他站在對面在講課。我手中有這兩本書的原版CD,如果有興
趣,可以發E-mail到[email protected]或在飲水思源投條兒給gaobo索要,只要您提供
光碟我就給免費燒。如果你已經深刻地理解了Effective C++和More Effective
C++,那你可以發現,你在眾人中已經是雞群之鶴。可以指導項目運作了,可以編
寫一切你想做的程序了,可以指出別人看起來不錯的代碼的大小問題了。如果你能
一眼看出有人的代碼是對應於"條款27"或"條款M6",那你可真是讓本人刮目了。
我已經講了,如果要寫程序,EC++和MEC++的境界已經足以使你自如應付,可是如
果你還不滿足,想關注一些理論層面的問題,或是想看看實現的代碼,你就不應該
錯過這幾本好極了的書。我是說Herb Sutter的Exceptional C++和More
Exceptional C++,這兩本書的難度是非常大的,我對每一條的閱讀筆記都是十多
頁。特別是泛型程序設計的部分,這兩本書旁徵博引,極盡深入探討之能事,每每
看懂一條,都抹汗一次,大感酣暢淋漓;還有侯捷的 STL源碼剖析 ,以實際的
例子一點點地講解一個STL是怎麼樣實現的,我是剛開始讀,不發表評論;而
Stanley B. Lippman,Cfront的實現者之一,執筆寫出Inside the C++ Object
Model,我只有一個字,就是基本帥呆了。我從中了解了無數的編譯器解釋源代碼
的細節,以及記憶體分配的細節,呵呵,這些都知道了,我還怕什麼呢?最近得到
了另一Cfront實現者、C++標准委員會Koenig的 C++沉思錄,看起來非常不錯,這
里也推薦給大家,但我也沒看完,亦無發言權。
最後最後,你們,未來的C++理論家們,可要記住,Bjarne Stroustrup的The C++
Programming Language無論如何也應該讀個四五遍!這是一切C++的書本的源泉。
如果還覺得不夠,就向C++標准委員會訂購一本C++標准。
一切中國大陸作者的書,一概不要看(包括我的)。一切VC++或講特定的編譯器的
書,一概不要看。如果需要補C語言的課,買一本非常小的K&R的The C
Programming Language足矣,其它的書一概不要看。不要先學C,再學C++,而要直
接學C++。你不是先學古文,再學白話的,對不對?所以相信我,直接來更容易。
以上文字,皆為原創,本人願意為每個字負責。
1、《Effective STL》
訂購:
作者:Scott Meyers
出版社:中國電力出版社
一開始欺負這本書比較薄,想快點看完,但不久就發現自己已經翻不動了。直
到看完最後一個字,才發現一個基本的事實:薄的不是這本書,而是自己的見識。
有關STL的書也讀了不少,正如讀《Effective C++》以前,有關C++的書也讀了
不少。Meyers的書總是給人一種脫胎換骨的提升感覺,他總能在大家以為老生常談
的地方挖出意想不到的新意,並指出一些一般人習以為常的東西其實存在種種危機,
或是在一些看來完全等價的選擇中,為特定的場合選擇最有效的(Most
Effective)那一種。而且他的切入口總是讓人看得懂的(不像Stroustrup的書,
第一句話就要琢磨半天),但是他總是會選擇幾個拓展點,並把它們分析得淋漓盡
致,這時候就需要一段代碼一段代碼甚至是語句粒度地閱讀了——當然,最後總是
看得懂,這和讀者的閱讀程度總是正比,這會給人極大的成就感。可以說,在STL
實踐的書籍,無書可出其右(當然在STL實作方面,我還是要向大家推薦侯捷的
《STL源碼剖析》)。
讀完這本書後,和Pascal就產生明顯的距離感了。這里我仍然要說:請熱愛
Delphi!我還是更願意寫「var s:set of char;」而不是
「set , allocator > s」,;-)。
2、《Modern C++ Design》
訂購(中文):
訂購(影印):
作者:Andrei Alexandrescu
譯者:侯捷、於春景
出版社:華中科技大學出版社(中文)
中國電力出版社(影印)
讀完這本書的第一頁,我就知道自己放不下它了,但我也知道,我的苦難經歷
又要多上一筆了。用C++實作設計模式,已經是骨灰級的難度,但這本書明顯還在講
一個template的對象模型的問題,這在我讀《Inside the C++ Object Model》時是
屢攻不下的難點。不過,出乎意料的是這本書居然使我具有一些概念了,而且動手寫
出了一個SmartPointer。
這本書我還遠不能說我讀懂了,但是確乎是讀完了。如果你還沒有讀過對象模型
和設計模式的書,我認為需要讀一讀。否則,直接看這本書根本就是受罪。最近,有
一些朋友也注意到設計模式的重要性了,可能從明年起我在《電腦報》上要發表一些
文章,屆時請朋友們指教吧。
--