① 如何學習編程語言
個人大學本科學的是軟體工程,學過幾門編程語言(C/C++/PHP/Java/Python),下面結合一下個人的學習經驗來談一下這個問題。
我覺得想要學好一門編程語言,需要經過如下幾個步驟:
基本語法
其實除非這門語言特別怪異,比如LISP,大多數語言的基本語法都是大同小異的。在初次接觸到一門新的編程語言時,我們需要快速的掌握這門語言的基本語法,比如變數聲明、if條件、循環條件、數組、字元串、最常用的函數等。
如何快速掌握基本語法呢?我一般會上網找一些快速入門的教程,這些教程最好伴隨一些簡單的練手例子。
語言的差異(坑)
任何一門語言都有自己與眾不同的地方,很可能這種語言的一些用法與自己的經驗相悖,那麼我們如何快速的掌握這門語言有哪些坑呢?我自己的做法是上網搜這門語言的面試題。面試題一般包括這門語言的常見用法技巧、坑。通過練習面試題,我們能get到語言的坑,而不是在實際的項目中踩坑。
系統的學習
上面兩種學習方法,有一個很明顯的缺點,就是我們沒有對這門語言形成一個知識體系,只是類似於打補丁的方式,學習的東西浮於表面。想要系統的學習這門語言,我們需要買一本關於這門系統講解這門語言的書籍。這樣有2個好處:第一個是進一步拓展你的知識面,第二個是利於你語言知識結構的形成。
當然,如果不想買書的話,我們可以看這么語言的手冊,手冊上也有很多關於這門語言的技巧和注意點。如果英語好的話,最好看英文版的手冊,哈哈。
下面是我覺得比較好的系統學習語言的書籍:
C:C程序設計語言
練兵
光看書是不能學好一門編程語言的。看書學到的知識只是在你的腦子里留下了一個初步的印象,但是沒有深入骨髓,沒有自己的理解。所以為了對知識有自己的深入理解,我們需要做一兩個實際的小項目,這個項目最好是能解決某一類問題的,不能是那種做出來沒有實際意義的項目。
如果可以的話,最好項把目放在github上開源。如果有人用的話那就更好了,大家會看你寫的代碼,甚至會和你進行討論,這個時間段將是你提高最快的時候,保不準你的項目就是下一個Linux呢,哈哈。
② 我是一個大四非計算機專業學生,想學習C語言,現在買了一本譚浩強第三版的C語言程序設計,不知怎麼開始。
個人感覺win7對vc6.0支持不是特別好~~
可以用dev c++ 或者codeblocks等編譯器~~
或者不嫌麻煩就用vs
③ 設計計算幾何演算法的編程語言是什麼,也是c、c++之類嗎
你問的這個很片面啊,如果是C語言中的 sqrt()函數,就是開方,當然是用C語言編的,C++也有很多同樣的啊,像VB JAVA都有演算法啊,windows就是用多種語言實現不同的功能的。。每種語言都有他自己的演算法,也有自己的區別 ,就像C是面向過程,而C++是面向對象,C++有繼承和多態等性質什麼的,
④ 任何高級語言都是編譯成匯編代碼然後運行的嗎
編譯器,是將便於人編寫,閱讀,維護的高級計算機語言翻譯為計算機能識別,運行的低級機器語言的程序。編譯器將源程序(Source program)作為輸入,翻譯產生使用目標語言(Target language)的等價程序。源程序一般為高級語言(High-level language),如Pascal,C++等,而目標語言則是匯編語言或目標機器的目標代碼(Object code),有時也稱作機器代碼(Machine code)。一個現代編譯器的主要工作流程如下:
源程序(source code)→預處理器(preprocessor)→編譯器(compiler)→匯編程序(assembler)→目標程序(object code)→連接器(鏈接器,Linker)→可執行程序(executables])工作原理
翻譯是從源代碼(通常為高級語言)到能直接被計算機或虛擬機執行的目標代碼(通常為低級語言或機器言)。然而,也存在從低級語言到高級語言的編譯器,這類編譯器中用來從由高級語言生成的低級語言代碼重新生成高級語言代碼的又被叫做反編譯器。也有從一種高級語言生成另一種高級語言的編譯器,或者生成一種需要進一步處理的的中間代碼的編譯器(又叫級聯)。典型的編譯器輸出是由包含入口點的名字和地址以及外部調用(到不在這個目標文件中的函數調用)的機器代碼所組成的目標文件。一組目標文件,不必是同一編譯器產生,但使用的編譯器必需採用同樣的輸出格式,可以鏈接在一起並生成可以由用戶直接執行的可執行程序。
肯定是要先編譯成機器碼,計算機才能識別。
⑤ 如何選擇學習編程語言,學編程要知道哪些知識
送你一個很好的學習網址:http://www.vbaspnew.com/
對於廣大編程初學者來說,存在著這樣普遍的認識:學習程序設計選擇編程語言
很重要,開口閉口就是VisualBasic、Visual C++、Delphi、Power Builder等一些現在比較流行的開發工具。經常看見有初學者問:我學C/C++,究竟是學
VisualC++好,還是學Borland C++ Builder好呢?或者就是要求在Visual Basic和Delphi之間作出選擇。學習程序設計和學習程序設計語言究竟是怎麼一個關系?初學者究竟應該如何取捨呢?就此我們打個簡單的比方:學習程序設計就好比學習射擊,而程序設計語言就對應射擊中的氣槍、手槍、步槍等各種槍械。學習射擊必須要選擇一種槍械,不可能沒有槍還能學好射擊的,也不可能同時學會使用所有的槍械。但是,如果掌握一種槍械的射擊,再學別的也就觸類旁通了。因為在熟悉一種槍械的同時,也學習了射擊技術本身。再學其他的,自然事半功倍。學習程序設計也是一樣,必然要從學習一門程序設計語言開始入手。同時在學習的過程中?
建議:學習程序設計不必苛求一定要從某一種語言入手,可以在Visual Basic、Delphi、Borland C++ Builder或者DOS下的Pascal、Turbo C(或Borland C)中間選擇自己比較容易接受的一種進行學習。從中主要學習的是編程本身的思想,學習的是用程序設計的眼光來看待問題。或許,學習的效果不能馬上看到,但是可以學到扎實的基本功,而這對於將來的進一步發展是有很大好處的。這些基本功包括:
一、強化邏輯分析和建立數學模型的能力
編程的目的是什麼?是要解決現實中的問題。而現實中的問題是用自然語言描述的,目前的計算機對其無法理解。我們要做的就是必須用計算機能理解的方式將問題「告訴」計算機。也就需要我們對現實問題進行邏輯分析,建立合理的數學模型,然後以程序和數據的形式輸入計算機,R、G、B三色份量來各表示一種顏色,對於顏色的處理被轉化為對R、G、B三個整數的處理。我們只要改變這三個整數,就可以將其改變成另外一種顏色。對於其它的現實問題,我們也要像
這樣使其可以被計
二、數據結構和演算法知識
程序設計發展到現在,已經有了一套比較普遍、完整的數學模型(我們稱之為
數據結構)和對應這些數學模型的處理方法(也就是演算法)。目前的程序就是以
此為基礎的。在程序員中間流傳著一句經驗之談:「好的數據結構是程序的一
半。」其重要性可見一斑。作為一個程序員
三、豐富的實踐經驗
程序設計本身就是一門實踐性很強的學科。一個只存在於紙上的程序如同沒
有翅膀的鳥永遠不能飛翔在現實的天空。任由代碼寫得再巧妙,風格再優美,也
只是一張紙上的一連串字元而已。就好比是一份作文練習,或許寫得很好,但是
不交給老師去批閱,和一張白紙又有什麼區別呢?!最後,作為一個程序員還有一點小要求:那就是身體素質要好,能熬夜才行。
Top of Form 1
選其器與善其事——縱談編程工具的選擇選其器相同主題的文章
「工欲善其事,必先利其器」——《論語》。很多人在學習軟體編程時,都希望
選擇一款優秀的編程工具。到書店逛逛,可以看到各種琳琅滿目的編程書籍,可
是你還沒有想好選擇學習什麼編程語言,也就無所適從,不知道該買什麼書看。
要想學好編程,必須認真了解各種語言的特點,找准自己的學習方向。那麼你首
先必須明確你想要做什麼,你所感興趣的是什麼?進一步說就是:你現在想要完
成哪一方面的程序設計,你的程序主要完成的功能是什麼?由此在眾多軟體中,
選擇出適合自己的開發工具。
一、基礎語言開發工具
諸如Delphi、VC++、VB等語言都是一種面向對象的程序設計語言,雖然每種語言在對面向對象的支持不盡相同,但它們始終貫穿整個程序設計的思維方式的主線。因此,要學好這些語言最開始不應該將重點放在某種語言的具體語法格式上,而應該注重學習面向對象的基本理論
最容易的入門語言——Visual Basic
在掌握面向對象編程的基本概念的基礎上,相對來講,VB是比較容易入門的
一門語言。在學習VB時,應該注意抓住對象的精髓,避免凌亂和繁雜,注意掌握
對象和控制項的屬性和事件以及它們的功能和用法、主要函數的簡單功能。最有效
的方法就是自己組織一個由簡到繁的學習步驟,比如:在學習VB簡單繪圖功能時,學著自己繪制正弦曲線;學習使用picturecl控制項來製作一個液晶效果顯示時間;在學習API函數時,製作自己的任務欄圖標。這種方法能夠很好的幫助你掌握VB中常用對象、事件的使用。
最靈活的語言——Delphi
對於Delphi來講,如果你曾經學過PASCAL的話,你會發現很多東西都是「似曾相識」的。確實如此,Delphi本身就是由和PASCAL結構類似的Object
Pascal編寫而成。如果你有一定的PASCAL基礎,學習起來當然更輕松一些。另外,還應注意對Delphi中包的理解和應用。比如,對運行期包、設計期包以及自己建立包應該注意的事項。在熟練掌握Object Pascal語言的基礎上,可以把學習Delphi時的重點放到如何使用Delphi編寫Windows應用程序,Delphi資料庫編程和創建控制項以及程序開發上面。
最強大的語言——Visual C++
VC++中由於有較完整的微軟基本類庫,使開發Windows應用程序變得簡單而
高效。它提供的復雜的資源編輯器,可以很方便地編輯對話框、菜單、工具欄以及其他組成元素,因此它的功能強大,使用方便,但是和VB、Delphi相比,入門較難、不容易掌握。學習VC++,應該首先把重點方在基本數據類型、輸入/輸出、循環和數組、模板以及如何創建C++應用程序上面。在此之後,才應該進一步學習VC++中資源編輯器的使用、ActiveX控制項的使用以及編輯器優化等內容。目前很多關於VC++的書籍中大部份都是對使用VC++各個版本開發應用程序的介紹,而忽略了C++的基本知識,實際上,對於初學者來講,直接從具體應用程序設計入手而忽略基本知識,反而會在很大程度上加大學習難度,很容易喪失學習的信心?!---->
當然在上述這些語言中,都提供有自己的資料庫編程和Internet編□'7b。在對程序本身熟練掌握的基礎上,你還可根據自己的需要選擇學習。當你已具有一定程序設計能力時,不妨自己設計一個現實、有興趣的課題,自行開發、自行設計。這樣可以幫你很好地熟練
二、資料庫編程
如果你主要是想完成資料庫方面的設計,那麼應該選擇專門的資料庫開發工具,常見的有:SQLServer、PowerBulider等。假如只是需要完成相對簡單的資料庫功能,那就仔細看看Access吧。花不多的時間,也能讓你有很大的收獲,另外,還有一些專門用於大型資料庫開發的工具如:DB2、Sysbase以及Oracle,這一類的軟體一般都需要有較扎實的資料庫基礎知識和一定的軟體開發能力。如果你是從頭開始的話,建議不要一開始就去學習這一類軟體。PB和SQLServer主要是用於完成數據處理和資料庫的訪問。由於SQLServer和操作系統兼容性較好以及在網路中的廣泛應用,目前很多業余愛好者都選擇學習它,在學習SQLServer時,應把重點放在SQL語言的組成、SQL的事務管理以及SQL的查詢和優化上面。而PB則一直都是很多從事數人來講,在學習資料庫基本使用技巧的同時,還應注意到在PB中,對於需要訪問Windows特殊功能的應用程序需要調用API函數,比如:控制滑鼠、創建目錄以及閃□'7b窗口等。
在學習資料庫編程時,可以嘗試著完成一個完整的軟體開發周期。從需求分析隍7d始,親身經歷設計資料庫、創建資料庫前端、創建表格、完成常見查詢以及輸出報表等全部過程。
三、網路編程
目前較為流行的網路編程工具可謂「風格迥異,百花齊放」。每一種工具都有其獨特的特點,在互聯網實現上都有各自的優勢。
在學習Java時,應該明確其中對象、繼承等面向對象的基本理論,從根本上掌握Java的運行機制。在學習中應把重點放在其語言基礎、Java與ActiveX以及JavaBeans等組件之間的編程技術以及應用上來。你可以自己編一些較為經典的小程序來加深基本技能的掌握:用Java的圖形處理能力編寫紙牌游戲,用AWT編寫掃雷或者俄羅斯方塊、用Java的網路功能編寫網路聊天室等等。
相對來講,ASP編輯方式簡單、容易上手、功能強大,早已被廣泛採用。在學
習ASP時,應該首先對ASP相關的網路知識、Web Server設置、HTML語言等方面有
一定了解,在此基礎上,注重ASP的主要編程語言VBScript、ASP的常用對象和組
件的學習。如果想對ASP有較深入的了解的話,還必須對其常用的資料庫
SQLServer、Acess等具有基本的使用技能。你可以自己嘗試編一個簡單的網上投票、網上超市等程序來加深對上述知識的掌握。
另外,值得一提的還有網路編程語言的「新秀」——PHP。它□'5c脫了ASP只能使用NT或者Windows 2000為伺服器操作系統的限制,對於資料庫的訪問較ASP更快、更直接。但是目前對於初學者來講,其語言比較難理解,安裝相對復雜、可供參考和學習的資料遠不及ASP。同時在Windows中使用PHP,並不能夠很好地體現其優越性。因此,我們建議對於沒有Linux/Uninx基礎的初學者,最好不要從PHP學起。
網路編程還有一個很大的特點:處處留心皆學問。時常留意互聯網上各個網站的設計,留心他人的設計思想和創意,會使你的網路編程技巧進步很快。總的來講,網路編答7b本身難度並不大,但是由於其在具體項目設計上涉及范圍較廣,比如涉及到與各種各樣的資料庫直接的介面、 學習語言的過程,是自己創造、自己編程的過程,也是逐漸掌握、逐漸應用的過程。在學習過程中逐漸培養起良好的編程思維、經驗,逐步提高程序設計能力、找到更好的設計方案才是編程開發的真正精髓和樂趣所在!
懂數據結構怕不行,我說的高手,不是在會不會的界限上,而是在能不能的界限上.
⑥ 數據結構和演算法對於每種編程語言都不一樣嗎
正好相反,對於猛洞陪每種語言都一樣。它只是一種思想而已,只是具體在不同語言上的實現可能會有些差別……不過枝蠢,除了顫培 C 類和 Pascal 類語言以外,其它語言基本沒有搞數據結構的意義。
⑦ 程序中一定會有演算法么
不一定,演算法和程序還是有區別的,演算法一般是針對某個數學問題。簡單的常見演算法主要有查找、排序。復雜一些的演算法比如有加密、搜索引擎、3D渲染等等。
程序和演算法最顯著的區別是,演算法一定可以在有限的時間內結束,而程序則不必。比如QQ,你只要不關閉它,就可以讓它一直運行下去,這就是程序。而搜索引擎,你點一下搜索,它會很快給出搜索的結果,這就是演算法。
至於Hello World嘛……太簡單了,無所謂演算法……
補充回答:
演算法存在的意義是解決某個特定問題的,否則就沒有意義了。只要你的這種組合符合演算法的定義和特徵的,那麼沒有爭議,就是演算法。Google的搜索引擎演算法不知道有多復雜,據說有上萬個參數,但那也是演算法。
其實樓主大可不必糾結於概念,大師們之所以把「演算法」這個概念抽象出來,是為了更好的解決一些常見的計算問題,當然由此也衍生出了演算法復雜度等一系列概念。只要能夠更好的解決問題,概念是次要的,結果才是主要的。