• 7

學習程式語言

王小明5106 wrote:
同感.其實程式設計師...sambad 兄, 不好意思. 有點意見和你不同.
Delphi 雖然也是 OOP, 但是我個人覺得它把物件包裹的太好, 雖然入門容易, 深入卻很難.
(恕刪)

小明, 我沒寫過delphi只寫過Pascal, 也沒提過delphi. 不過, 只要能真的搞懂delphi, 那東西拿來發展一些商用套裝軟體是很不錯的. 印象中以前網路看盤有個叫什麼小精靈還是點金靈的即是用delphi所寫, 光那個創意就幫那家公司撈了許多錢. 不過, 目前流行的任何一樣程式語言, 幾乎都是入門容易深入卻很難. 但有時能否賺錢倒不是靠程式難不難, 反倒是靠創意居多. 舉個有趣的例子, Wii功能沒PS3/XBOX360強大, 賣的卻比功能更強大的遊戲機好, 靠的即是創意二字.

關於Jack兄所提程式測試問題, 這個分兩個部份. 第一個是程式員的測試, 這東西和邏輯有關, 但是經驗佔大部份. 尤其是不同的程式語言有不同的特性, 出錯的地方也不大一樣. 想要把debug弄好, 看高手debug最快, 但也要自己爭氣, 有著不服輸的精神, 堅毅的把自己的bug都抓出來, 久了自然就變成行家. 第二個則是公司的debug策略. 除了程式員的測試外, 有規模的公司多半有一定的除錯程序, 會將程式員寫好的程式交給另一批專業的測試人員來找尋錯誤. 然而, 找出來的錯誤照樣要由程式員來debug. 針對大型的系統來說, debug所花的時間往往超過最初寫程式的時間, 但某些超級程式員就是debug厲害, 所以別人花一天debug還抓不出來, 他只要花個幾分鐘就搞定, 這種人當然工作績效就比其它人高囉. 不過, 程式測試這東西多半在學校老師能教的很有限, 要靠自己練習居多. 說真的, 我在職場上見過太多人debug一整天抓不到錯誤, 就是因為邏輯出了問題. 那些一兩天debug不出來的程式, 往往錯的只是一兩行程式碼, 真的會叫人哭笑不得. 當然, 這也是某些價碼高的程式員之所以能價碼高的原因之一(但往往不是主因). 一般寫程式的話, 依循結構化程式設計原則, 多半可以寫出一定水準的程式碼. 但很多人忽略副程式不應太長的原則, 很多人忽略反覆使用的程式片段應以副程式呈現的原則, 太多人忽略了一些"小節", 導致程式難以維護且除錯困難.

至於躲Oracle的Bug, 這個超級好玩, 連他們家的SQL最佳化也很有意思. 不過, PC版Oracle沒價值, 要就去玩大型電腦的Oracle, 光要把它管好(DBA), 月薪就比一般程式員多很多了. 話說回來, 每種不同的資料庫都有他們不同的"特性", 有時未必是Bug. 但我很同意, 每家的Bug都有一些, 如何閃掉與資料庫系統相依的Bug真的是學問. 偏偏這種學問並不共通, 而且又會隨著版本變化...ORZ

不過, 提這些事情都有點遠了. 想學寫程式沒什麼捷徑, 老老實實的每天練習, 最好寫一些自己真的要用的東西, 那你遲早會進步的. 此外, 我會建議英文要學好, 養成閱讀Help File的習慣. 微軟雖然很多人對他們家不滿, 但他們的Help File寫的真的不賴. 很多時候你不必買書, 光看Help File就足以讓你學到大部份書上沒教的事情. 此外, 英文好也容易幫助你猜測你要的功能是使用哪些屬性或方法. 最後一點, 我建議永遠保持好奇心, 多嘗試你在學習的程式語言裡面一些你沒用過的功能. 但是, 以上所提, 最好是英文程度好, 直接看原版的Help File, 真的可以讓你受益無窮.

此外, 我是誠心的要補充一點, 程式語言沒有好與不好的分別, 只有流行與否的差別. 不流行的程式, 日後有升級困難的缺點, 且使用與維護成本將變得較高. 同樣流行的程式語言, 又會因為要寫的程式目的不同, 應適當的使用不同的語言. 用C++系列的寫使用者界面絕對不是件好玩的事, 用VB.NET系列寫Driver也肯定不妙, 善用不同的程式語言來做不同的事情才是王道. 整個C系列的語言雖然擁有執行速度快, 彈性高, Portability強的優點, 但畢竟程式碼的後續維護性較差, 並不適宜做純MIS應用程式的撰寫. 針對科學計算, 則Fortan系列的運算速度實在是快, 往往比C系列的語言快一大截; 但C語言直接用in line assembly寫X87的組語副程式, 則運算速度比任何中高階語言快數百到數千倍之間. 所以, 千萬不要心存定見認為誰好誰壞, 看用途來採行最佳的程式語言才是較佳的方式.
不知道樓主學程式的最終目的是?
學程式如果有心學,是沒什麼困難,只是所謂的商業應用,可能就要靠經驗累積了
會寫程式的人要寫出一套程式並不難,但是要寫出一套適合用的程式,那就要看你累積的經驗有多少了
ms的.net和sun的java都不錯,學會一套程式,只要程式概念夠強的話,要跨到其他程式,會比較容易上手
還有sql一定要會,一般商業應用的軟體10套裡面有9套都會用到sql的

小弟拙見還請多多指教...
SamBad 寫的很好啊, 有些人不管做啥都只能糊口, 觀念不對, 有再好的技術都沒用..

程式有啥好學的? 語法嗎?
if then else, iteration, branching, 這些東西應該看看 Help file 就可以完全破解了吧..
小弟我只有幾個小看法..
BASIC 是個 interpretor, 跟寫上述大部份人提到的工具, 除了 SQL 像以外, 應該都是 compiler 的架構了, 這點要先去弄懂. VB.net 你去看的話會感到 Frustrated, 因為跟 C# 與 Java, 在我眼中是一樣的東西, 都是 OOP, 不同的是 VB.net 是讓熟 Basic syntax 的 programmer 好上手的 OOP, C# 是讓 Java Programmer 好上手的 OOP, 都是微軟要搶 Platform/Solution 市場的 strategy 啦

資料庫的話, 寫寫 SQL, 架架 Server, 這些都蠻無聊的... 用 "學" 這個字太嚴重了, 看看就好, 資料庫真的要看的是你怎麼解問題, 是做 Transactional Database, 還是 Data mining 的 database, 是完全不同的 Schema 而且 backend 跑的也是不一樣的 server, 是要跑 Oracle 或 Sybase, 多少人用這個系統, 流程有多 critical, 要不要做 fail over, AP 層要不要做 Distributed system, 都是要靠累積的經驗去判斷推薦客戶買的..

有人提到 C/C++, 基本上這兩個東西我看來完全是兩個語言, 千萬不要一起學..
C 是 Structure language, C++ 又是 OOP, 如果你要去做 Embedded System 那麼 C 足以, C++ 應該只有 ARM core 或 TI DSP 32 bit 以上的才有支援吧.. C++ / Java 反而是比較像的東西, 如果以資源取得的方便性來說, Java 是好多了, 而且他的 byte code architecture 就算你要 reverse engineering Java byte code, 你也是得到很容易看懂的 code. 也因為 VM 的關係, Java 的 byte code (classes) 可以 porting 到any platform. (只要是 run 相容的 VM), write once run anywhere.. .net platform 則是 write everywhere (VB/VC/VC#/Asp) 都是 run once (.net platform over windows only)

扯一扯就越扯越遠, 程式扮演的角色只是在 0/1 logic gate 的機器碼與人類語言的中間, 從低階到高階, 以前就有組合語言, 8051/8086/80x86/Arm.... 每個 Processor 都有自己的machine code, 即使是 Java Virtual Machine 也是, 不過他是 Java byte code, 也有人出跑 byte code 的 chip, 因為機械碼難懂, 程式設計師就要去了解 timing / register / io ... 連一個 2 byte 的加法你就要考慮怎麼去判斷是不是有 carry 有夠麻煩, 所以有所謂高階語言的出現, C 啦.. a = b + c , 一行搞定也許是 long 的加法.. C 的出現就讓 Portability to other processor 的可行性高多了, 只要語法大家都一樣 (ANSI 或其它的標準), 出不同的compiler 給不同的 CPU Core 也就可以 port C program 了, 但是 C 只是模仿人類的語言, 後來 OOP 的出現, 讓我覺得程式也可以模仿人類的思考與行為, think in Object Oriented, 就跟大部份人的組織運作有很類似的地方, 監理所只要認定是車(interface)就可以開繳稅單(interface function), 這台車可以是機車, 也可以是汽車, 開的金額也會不一樣(Polymorphism).... 現在越來越多的 platform 用 C/C++/Java 開發出來, 做的更簡單, 基本上很多東西都不用寫了, 以前要寫一個 window 是多麻煩的一件事, 現在呢, 拉一拉就可以了.. 所以寫程式真的只是一個工具.. 重點是你要把它當工具用..

學寫程式就像拿瑯頭一樣, 敲個幾次就知道怎麼敲, 問題是你可以敲出什麼樣的東西, 靠的是你的藝術天份, 所以賺不賺錢, 靠的不是你的 programming skill, 而是你的 domain knowledge.. 一定要認清方向, 你要做的事是敲出一台車, 不是學怎麼用瑯頭...

希望我沒有扯太遠.. 這是我的一點小小看法








我到覺得C++比較實用說,不喜歡VB!!
大家好阿
所以最後的重點應該可以說是要學Computer Science(順便問一下正確的中文應該是什麼)

畢竟我們學校都不會教你語言的 那個是你自己應該去學會的
但是Java/C/C++的基本功考試都會考
出去面試他們也會問 C++ 跟 Java 裡面的static有什麼不同
王小明5106 wrote:
還是學 C++ 類的語言比較長久.
只要熟悉 C++ 之後, C#, Java, Javascript 就都順便學會了.
一舉數得.

「順便學會」?哪有這麼好?
會比較好學、學得比較快倒是真的...
開心就好 wrote:
我到覺得C++比較實...(恕刪)

真的, 做什麼事用什麼程式語言. 我舉個例子, 下圖是我寫的小程式而且有夠簡單:

裡面沒有使用任何DLL, 沒有使用任何外掛物件, 只寫了兩行程式碼, 花了不到五分鐘. 使用者在上面一行任意輸入數學運算式, 按下[等於]按鍵即把答案顯示在下方. 請問, 要用什麼程式語言來寫最快? 請問, 用C++要寫多久?請注意, 一定要能認()一類的東西, 也一定要符合數學運算優先順序.
開心就好 wrote:
我到覺得C++比較實...(恕刪)


VB是開發速度比較快
C++則是執行效率較高

小弟只接觸過一點點VB
以上是聽別人說的
不知道對不對
My Blog : http://zeroplex.blogspot.com/
li1715 wrote:
VB.NET, C#, JAVA, C/C++, C++/CLI 都不錯,這些語言都有其擅場的優勢。...

(舉手) 我有疑問...
C++/CLI 有人在用嗎?(或者問:有實用的價值嗎?)
C++/CLI 語法跟 C++ 不甚相同,無法用在其他純 C++ 環境
而若要碰 .NET Framework,學 C# 或 VB .NET 就好啦
所以 C++/CLI 創造的意義到底在哪呢?
Little Jack wrote:
Computer Science(順便問一下正確的中文應該是什麼)

電腦科學,或計算機科學
我是不太主張翻成資訊科學啦
因為依我的認知,computer science 的範圍只有電腦本身,頂多延伸到網路硬體
但資訊科學的範圍可是包羅萬象
  • 7
內文搜尋
X
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 7)
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?