伊莉討論區

標題: 學寫程式一直很開心的原因? [打印本頁]

作者: CodeMonk    時間: 2016-5-18 11:55 PM     標題: 學寫程式一直很開心的原因?

本帖最後由 CodeMonk 於 2016-5-19 01:41 AM 編輯

我剛考上大學,資訊系,還沒開始上課,開始自學寫程式。
也去補習班試聽過(說真的,很無聊)
從C到Python、Perl、Julia、Prolog、Haskell、Forth ......都有摸(但也真的只是摸)。

但有一個關鍵的困難就是,有很多東西能看的懂語法但不知道是要做什麼用的、
還有學程式學到稍微想要做東西發覺到做不出來。


不知道是要做什麼用的:
學Prolog就很明顯,像是他的基礎語法:
%this is comment
fact(fact1,fact2).
rule(Resolution_Value):-
                                  Resolution_Value is true,
                                  write('that is true') .

簡單的東西,像是loop當然不是問題:
loop(0):- !. %for cut the loop
loop(Time):-
                     NewTime is (Time - 1),
                     write(Time),
                     loop(NewTime).
可是往後面學下去就有滿肚子疑惑,
好像看到異國文字似的(偷偷用了複製貼上),
他到底為什麼要把語法用的這麼奇怪,感覺很難寫出if、switch、for的架構,
而且沒看到他有什麼優點,
以至於往後的學的都覺得是浪費時間…
有一種慌了似的感覺!?
老師也沒辦法解開我的瓶頸(你還是乖乖的把java學好吧,以後大學會考!
我個人覺得學習完全看不懂的程式很好玩。



學程式學到稍微想要做東西發覺到做不出來:
像是要用Perl去把stm8的assembly轉換為intel hex的燒錄檔,
光是這個程式,就要花我好幾天的時間來思考而且還沒完成。
所以我挺喜歡Perl或Python的,有位有很多open source的package可以用,
沒事會去看他套件的source code,
但是,像Prolog、Julia、Forth、Erlang、Ocaml.....都沒有像是PyPi 或是CPAN的感覺,
讓人很難學習。
但是又不喜還看去看一個完整的軟體source code,它們通常很大,讓人看的暈頭轉向。
我很喜歡重新發明車輪,但時沒有當來沒有車輪的時候,重新發明車輪會變成
一個很花腦裡和時間的作業,但是這個作業不見的會有結果,就像做沒有答案的習題本,讓人鬱悶!

請問各位有人一樣有這種狀況嗎?




作者: jt200809    時間: 2016-5-19 02:29 AM

倒是沒看過  看到語法就會 High 的人

Prolog 我第一次接觸它  至少也20幾年前了   只覺得它比較特殊  買了 Turbo Prolog 的書看了一些  之後就從未再碰了

程式  只是當它是項工具 完成事情的工具  就這樣罷了,看重的 是它能做出甚麼東西來?   學校教的觀念  也一直強調它是工具   當然不是每個學校都是教這樣的觀念就是了

真正工作  你很大的機率都在維護別人留下來的程式  那種你會邊改邊譙的程式

我更願意面對人   能用嘴巴解決的事  絕不動手去做

也許你會遇到    User 或客戶 不用你的程式  不是因為你的程式寫得不好  而是對你不爽罷了  
作者: chevylin0802    時間: 2016-5-19 03:24 AM

本帖最後由 chevylin0802 於 2016-5-19 03:50 AM 編輯

許多特定的程式語言是有分領域性的
因此它看起來會很偏冷門
語法也相對的會比較怪一些
因此當你在學各種程式語言之前
要先學它的起源以及發展的歷史

看懂它出生的源起與歷史
你才會比較容易有感覺

有一些程式語言已經發展很久了
像Forth就是其中之一
Perl, Prolog也是

每一種程式語言特定的寫法都是針對某些偏向
除了C, Java比較沒有特定的偏向性以外

還有許多程式語言則是只提供給特定的程式使用
像是Excel也有Excel VBA
而AutoCad還有AutoLisp
有它一定的專屬性

當然也有許多程式語言的發展到最後卻是走偏了出去
離開了原本發展的原始目的
比如Java
原先是為了電器自動化的目的而設的一種CPU晶片的研發而製作的程式語言
到後來卻變成一種發展成架在虛擬機器上執行的程式語言

語法並不難學
難的卻是在於
後來的程式語言在教學上
都千篇一律的從教Hello World的列印開始
致使許多人感覺不出它原始被設計出來的理由

Python與PHP同樣繼承自Perl的語法
但PHP的發展方向完全只針對網頁伺服器的用途發展
而Python則被拿來作為本機執行的用途為主

像SQL語言也很特殊
只針對資料庫而設計的語法
SELECT.......語法上
裏面還有LEFT JION RIGHT JOIN .........等一堆嵌入在裏面的條件
當腦袋瓜不清楚的時候
往往寫出來的讓它跑起來就是不去按照你的想法跑
困難度一點也不比你在搞Prolog少
但是它非常鍛練一個人邏輯能力

程式越寫越大隻不代表一定是好
事實上程式寫小隻也未必就差
我後來完全不去玩Windows的程式的主因
是因為Windows的應用程式發展到後來
會讓人非常頭痛
改版的時候意味著許多的程式要重寫
而隱藏在裏面的Bug也越來越多
從1998年以後我就不再寫Windows環境裏的程式
而其原因在於
系統架構的原因
讓我發現到
其實Unix及Linux的系統上更容易讓你發展小程式
甚至於可以自行發展許多虛擬式的驅動程式來串接
這意味著改版的時候遠比一整隻大程式更容易維護
它完全可以忽略掉改版過程當中參數個數或者是前後順序上的差異所帶來的問題

try{ .....} catch語法我也很不喜用
因為它意味著不負責任的作法
一堆人寫這種語法
遇到許多Exception的狀況就只給你噴噴Log就結束
真的只能說夠扯




作者: qqmain    時間: 2016-5-22 04:36 PM

學那麼多幹甚麼? 邏輯都是一樣的, 好好學會一兩種,
語言只是工具, 真正是要用語言解決問題
作者: CodeMonk    時間: 2016-5-22 06:51 PM

本帖最後由 CodeMonk 於 2016-5-22 07:00 PM 編輯
qqmain 發表於 2016-5-22 04:36 PM
學那麼多幹甚麼? 邏輯都是一樣的, 好好學會一兩種,
語言只是工具, 真正是要用語言解決問題 ...

我不是想學不同種工具,而是不同種邏輯。
這也是學不同編程範型(Programming paradigm)的程式語言的原因,因為語言會影響思考,單然用C語言也可以做到約束編程或邏輯編程,但你如果只看C語可能就不會想到那種對問題的思考方法!
已主流為例子Java或C/C++都不常見(我根本就沒看過)約束編程的思維邏輯(除了Regex),那就很難處理像是覆面算(Verbal arithmetic)之類的事情。
作者: rrotjp    時間: 2016-6-5 05:38 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: larru    時間: 2016-6-6 10:13 AM

寫程式最開心的原因在於 "寫之前制定目標", 然後透過coding完成會很開心
ex: (本人比較熱愛圖學)
目標: 希望把電影影片做自動化剪輯成highlight
透過Coding也真的完成了, 看到成果的短片真的有把影片的部分highlight都剪進來, 就會很開心
作者: hst326    時間: 2016-6-18 02:52 PM

真的不喜歡  就別免強自己了,
看太多這行業中,不愛寫程式又勉強自己的例子。

說真的, 本科系都那麼多人學不好了,
半路出家除非你天生神力阿, 不然還是別來壞了這市場的水準,
除了寫程式, 一定還有你擅長的事可以做
作者: rr09192084    時間: 2016-7-29 04:12 PM

寫程式最大的樂趣是什麼?就我個人而言就是解決問題,在生產、商業或是服務等各種產業中,稍具規模的事業體或是單位都會有ERP或是類似的應用系統,而這種系統並不一定能完全契合實際的營運狀況,在某些環節上需要產出一些自行定義分析的資料,或是外掛一些程式,可以產生讓ERP系統匯入的資料,這些都是可以透過程式設計來解決的問題,解決了這些問題,就是體現了資訊人員的價值。
當然,如果事業體負責人願意發一筆錢,讓系統廠商針對事業體得需求來客製化,這會讓資訊人員相對輕鬆,不過也同時降低事業體對自有資訊單位的依賴。
作者: vm6jp6rmp4    時間: 2016-9-12 11:55 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: neqkwos1003    時間: 2016-9-13 04:11 PM

我會寫程式是高職同學會寫,所以我就對寫程式有興趣了,你寫程式可以由小寫到大,寫不出來就休息一下,等到腦子想開了,再debug,我80%都能解決,給你參考~
作者: 行過沒碰到    時間: 2016-9-13 09:24 PM

學程式沒有興趣真的很難學下去...
作者: larru    時間: 2016-10-7 03:01 PM

要有終極目標才會開心, 舉例, 寫一個自動炒股程式, 有興趣的自然就很high!!!
作者: qweer33    時間: 2016-10-12 07:46 AM

學程式沒有興趣真的很難學下去,but有興趣的自然就很開心!!!
作者: alch1502    時間: 2016-10-29 11:33 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: gooledh    時間: 2017-4-20 10:17 AM

簡單來說 公司要我寫什麼就寫什麼,寫程式 打打字就有錢賺,有什麼不開心的 。
作者: cockroachrun    時間: 2017-4-21 09:50 AM

Forth 我有學過. 超古老的語言
但請不要看不起他. 他的出現是為了解決天文台上面. 控制望遠鏡. 被發明出來的. 現在很多人造衛星上面也跑這Forth
Forth 是一個很神奇的語言. 他可以是一個直譯器. 也可以是一個compiler .更可以說是一種機器架構. 這也導致他很難以學習
作者: mousesex1    時間: 2017-4-27 04:22 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: weber0921978651    時間: 2017-5-5 01:24 AM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: ash1326    時間: 2017-5-11 01:13 PM

我寫程式的時候會很開心,但不是因為單純寫code的關係

會去寫程式代表你有某種需求,像我之前對演算法有興趣,自己嘗試寫不失真壓縮

在這過程中,當你不斷的改良,並修正你的演算法達到更佳的壓縮率時

間接的發現了更多的東西,更好的ideas,這非常有成就感,寫起來也會很享受

反過來說,只是單純交差了事的程式,寫起來當然就不會很開心
作者: chevylin0802    時間: 2017-5-12 12:09 PM

本帖最後由 chevylin0802 於 2017-5-12 12:12 PM 編輯
ash1326 發表於 2017-5-11 01:13 PM
我寫程式的時候會很開心,但不是因為單純寫code的關係

會去寫程式代表你有某種需求,像我之前對演算法有興 ...

其實在20幾年前的歐美國家
把程式設計這件事情分成了好幾個部份
第一個是系統分析與系統設計師
負責定義整個程式的框架
第二個是程式設計師(Programmer)
是針對系統設計師所提出的規格來進行設計
第三個則稱之為編程人員(Coder)
所謂的編程人員就是最初級最底層的寫程式的人
之所以說是最底層是因為他們的工作就是輔助程式設計師的工作而來
通常程式設計師會根據系統的需要而定義許多程式庫裏的函式
然後把規格與需求定義出來之後就交給這票最底層的編程人員去撰寫
這樣子的好處是在於企業的智慧財產權以及Know How不致被別的公司挖走
同時又可以達到完全的分工
當然程式設計師也要負責針對編程人員所設計的函式進行除錯
所以企業的軟體研發流程就是如此不斷的在往前進

所以會寫程式不代表什麼
寫出程式有成就感也一樣不見得代表什麼
因為很多人可能認為他自己是一個Programmer
但事實上他的能力卻只是一個Coder
因為把程式設計出來以及把程式設計成一個具備長久維護以及方便除錯的程式
並不是一蹴可幾的事情
同樣的功能以及同樣的執行結果的程式
光光架構的不同就有不同的發展空間
而發展空間的大跟小也就決定了這個設計師的成就高度到底到哪

以個人的觀點來說
我寧可從開源程氏碼的被引用人數來看這個人的程式設計潛力與能力
當一個人做的專案不斷的被全世界裏的程式設計師引用的時候
就代表他所寫的程式架構以及程式的可延續性是比較高的
不一定要在演算法上打轉
尤其當你的專案在開源界成為某一個領域裏的主流時
我相信你的成就感與開心感會更加強烈也更加踏實
不要去學那些自以為已經是大企業大公司的研發單位領導人那種眼高手低的成就
那根本就是在自欺欺人
除了整天開聊天會跟拍桌罵人的本事很強之外
就屬壓榨下屬的腦袋瓜能力最強


作者: ren1244    時間: 2017-5-12 06:56 PM

國中開始自己學C語言(初學時用Turbo C)
不是資訊科系,卻也學了不少東西
C/C++ > javascript > PHP > basic,lua...
語言不像樓主學那麼多,但是其他:
wxWidget、SDL、OpenGL 等框架
AES、SHA 等加密演算法
ffmpeg、goastscript、imagemagick等軟體
apache server
這些東西串起來已經可以做很多事情了

這中間也不是一直泡在裡面
累了也會休息
但過程滿有趣的!


作者: ash1326    時間: 2017-5-12 08:56 PM

chevylin0802 發表於 2017-5-12 12:09 PM
其實在20幾年前的歐美國家
把程式設計這件事情分成了好幾個部份
第一個是系統分析與系統設計師

我同意,但沒辦法走研發就是這樣。
作者: chevylin0802    時間: 2017-5-15 05:44 PM

本帖最後由 chevylin0802 於 2017-5-15 05:50 PM 編輯
ash1326 發表於 2017-5-12 08:56 PM
我同意,但沒辦法走研發就是這樣。


台灣的研發其實有它自身的問題的
基本上應該要先講到專案經理的部份才對
台灣的專案經理似乎只懂得抄襲
而且都只懂得在功能面或應用面在動腦筋
然後沾沾自喜的認為這就是所謂的創意
從來不懂得從終端使用者的角度來看事情
事實上科技之所以叫做科技
就最根本的原因就是在於使用者在使用過程當中覺得太麻煩或者覺得不容易使用
為了解決以上的問題而產生出產品出來
就如同國外的大廠常常提出的概念
所謂的Total solution
可是在台灣
solution老早就不見了
只剩下所謂的ideal
從來不管end user的抱怨
所以不只是寫App的工程師常常搞出Engineering Style的App
就連所謂的PM也常常開出一堆Engineering Style的Spec.
這才是台灣現在軟體業界最大的困境
從不針對End User的需求而做出便利性高的App
只是針對所謂雜七雜八華而不實的創意在設計

這種感覺就像是
一款想要針對一般人設計的傻瓜相機
卻因為某些笨蛋自以為是的創意
把傳統相機的光圈快門焦距跟伸縮鏡頭以及閃光調整都做上去
然後自以為是的把它號稱這是一款擁有特多功能的傻瓜相機
這就是台灣這堆開規格的專案經理最常見的手段


作者: yessp    時間: 2017-6-11 01:38 AM

如果是要興趣的話可以去試試看寫遊戲方面的程式,或是用現成引擎(Unity之類
慢慢地建構自己的遊戲,多麼有趣阿!
作者: zzhu03689    時間: 2017-6-17 03:31 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: CoNsTaRwU    時間: 2017-6-20 06:59 AM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: chevylin0802    時間: 2017-6-20 12:52 PM

本帖最後由 chevylin0802 於 2017-6-20 01:30 PM 編輯
CoNsTaRwU 發表於 2017-6-20 06:59 AM
社會再走,講話邏輯要有

原本的回帖已經過了這麼久就算了,但是下面的點評我真的是看不下去

第一次看到有年輕人敢跟做10年技術總監的人對槓
其實我已經沒有在寫程式了
老早就脫離那個範圍
但是事實就是一堆範例裏的try{ } catch 都在噴Log
這些事情你沒辦法反對
不管你上Github去找範例還是去sourceforge
基本上都差不多是同一種style
偶爾會發現有幾個程式寫法不是如此
事實就是問了一堆寫JAVA的人catch裏面應該要有什麼東西
就是只會e.printtrace();
你敢說這種作法是負責任的嗎?

C沒有try catch語法
難道就不穩定了?

可見得你學都只學個表面
恐怕你根本就不知道什麼叫做blocking I/O 跟non-blocking I/O的區別
所以才會誤以為有try catch就一定會穩定
根本不知道那叫做懶人的寫法
或者叫做邏輯沒學好的寫法

try catch的語法最初出現在C++語言裏
之後JAVA跟著直接引用
然後到了現在各式各樣的新的程式語言也都把它納入進來
可是在try catch還沒出現之前呢?
不管是Fortran, Pascal, Forth, C, Cobol, BASIC,.....程序導向語言
這些早期的程式語言哪一種有try catch語法?
跟我說try catch是程序導向的語法?
你是不是沒睡醒就在發文?
縱觀各式不同的程式語言
有哪一個程序導向的程式語言裏面出現過try catch?


沒有try catch的語法難道電腦就會常常當機?
沒有try catch的語法難道以前的大型電腦中型電腦小型電腦迷你電腦的系統就會當機?
UNIX/Linux的系統都有所謂的blocking I/O跟non-blocking I/O的作法
blocking I/O確實就會有可能出現I/O故障引發的問題
可是non-blocking I/O不會有這種困擾
non-blocking I/O的處理方式在1970年代就已經有了
不是什麼新技術
反倒是JAVA一開始就有定義執行緒thread這樣的東西
在POSIX標準還沒完全建立之前
JAVA對於I/O的處理方式一開始就只支援blocking I/O
所以try catch對於JAVA來說有它的作用跟意義
但重點仍然是在於try catch裏的exception狀況發生時應該做什麼事


作者: CoNsTaRwU    時間: 2017-6-20 07:35 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: exlater    時間: 2017-6-30 11:31 PM

我當初是因為想要自幹繪圖軟體才學程式語言的,
的確一開始只學程式語言基礎會讓你覺得好像不能做什麼,
那你可以看看別人怎麼做的,去 github 上找一個你懂的語言,
有興趣的 project,打開來看看別人怎麼寫的,或許對你有幫助
作者: troy007    時間: 2017-7-24 08:19 PM

一開始摸太多了,在還沒上課之前如果要自學,
就選一種來自學就好,
第二就是選一個自己喜歡的平台,網頁、手機或電腦應用程式,
做一些簡單自用的開始,
你會開始有成功感和挑戰感,慢慢上手,
程式設計是需要時間練功的
作者: a29yly1111    時間: 2017-7-31 11:29 PM

覺得學程式沒有興趣真的很難去學呢
作者: and10916    時間: 2017-8-26 01:33 AM

有個目標比較重要
學多個程式語言沒有不好
有些觀念會重複
到最後會不怕再學新的程式語言了
但要記得目標是什麼
把目標需要的程式語言學會
熟悉有什麼工具可以用
想法比較不會卡在程式語言上
作者: w12463    時間: 2017-10-9 08:40 AM

我的興趣在於  將問題逐步解決的過程與結果
如果你寫程式沒有培養出興趣 那真的走不久 就算可以也很痛苦

作者: hunter00101    時間: 2017-11-11 11:11 AM

我現在還記的我在大學第一次上計算機語言課時,我問老師我要怎麼做才能學好C/C++,老師只回答:不管學什麼,最重要的是邏輯要學好,訓練好!語法錯編譯器會幫你處理,邏輯錯編譯器不會幫你處理。
作者: cindyfly2    時間: 2017-12-3 01:03 AM

寫程式賺錢,每個月好幾萬入妳的戶頭就是爽,妳先看那個手機線上遊戲或電腦線上遊戲很多人玩,妳就寫外掛,但妳要有良心跟喜歡花錢買外掛的人說明,只能開小隻帳號來掛,用外掛也要有被鎖帳的可能,這樣想跟妳買掛的人,至少心裡也有準備被鎖的可能性。但用外掛真的很爽,殺爆一般玩家。
作者: ihateshihmt    時間: 2017-12-24 11:14 PM

不用著急吧
上大學寫作業什麼就會教C了吧
都是先從C開始的啊~
摸這麼多就真的只是摸你說的沒錯
作者: darkforce2    時間: 2017-12-27 08:29 PM

開心的原因應該就是解決問題 -> 成就感 -> 其實也就是人的五種基本需要之一
作者: 掰掰嘎嘎    時間: 2018-1-7 09:38 PM

自己定一個目標去學習會比較快樂跟簡單
作者: affkame    時間: 2018-9-26 10:25 AM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: yohoeyny    時間: 2018-11-3 09:15 AM

如果你以前沒有學過程式語言,建議一開始只挑一種學到專精,以後其他的就很容易觸類旁通了。

作者: neqkwos1003    時間: 2018-11-3 11:42 AM

寫程式是為了各種不同的需求而寫的,寫好就能方便處理你的作業,就能獲得成就感!
作者: mountainboy    時間: 2018-11-18 12:43 AM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: samin0906    時間: 2018-11-21 09:15 AM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: warballoon    時間: 2018-11-22 04:50 PM

學習任何東西都要有興趣才有動力繼續下去滴
作者: kyo22    時間: 2018-11-27 11:30 PM

學習寫程式最開心就是解到一個難題/做到一件屬於自己的程式
作者: t3357794    時間: 2019-5-25 11:54 PM

寫一些小遊戲,自娛娛人,我現在用Scratch V3.0線上版,教小朋友寫遊戲,小朋友從製作遊戲中,理解程式邏輯概念,有可以產出屬於自己的作品,他們很有成就感。
作者: neqkwos1003    時間: 2019-5-26 12:01 AM

寫程式喔…大一點的程式寫完後就信心滿滿了… 不過會失去學新語言的動力了…
作者: stephenwei_lu    時間: 2019-6-8 03:19 AM

開心的原因是因為可以創造,
學了就徬徨是因為根本還沒踏進去。
當真正踏進去後3,5年又會再一次的徬徨,
當然那是3,5年後的事了。




歡迎光臨 伊莉討論區 (http://www87.eyny.com/) Powered by Discuz!