學習程式語言之後,可以透過所學將自己想要的功能一步一步實作出來,這也是多數工程師覺得最有成就感的時刻。
不過,世界上有一些程式語言讓工程師很崩潰,甚至不想面對它們。明明都是語言,怎麼會有那麼大的差異呢?這也是這篇文章要來探討的問題。
在此之前,我有分享過最熱門的程式設計語言,前 3 名跟網頁技術有關係,分別是 JavaScript、HTML/CSS 和 SQL。
如果你還沒有看過我分享的內容,建議可以先去看看喔!
相關技術文章:
◆ 哪個程式語言最流行最好?
上次的內容參考了 Stack Overflow 的調查報告,其中就有針對程式語言做個熱門排行榜。但,還有很多有意思的內容沒有被提到,所以想分享出來讓你知道。
讓工程師害怕的程式語言排行榜
既然有熱門程式語言,那相反的一定也有讓工程師害怕的程式語言。
在這個榜單值得注意的是,有很多的程式語言都是現今熱門的,他們並不是投錯票,而是許多開發者雖然懂得怎麼寫這些程式,但卻沒有意願深入下去。
也因為這樣,這些程式語言才會上榜。工程師不想深入學習語言的因素很多,例如:
- 沒有獲得成就感
- 語言結構不容易理解
- 程式維護上需要大量精力
- 程式效能並不好,容易造成緩慢
- 想要實現一個簡單功能,但卻花很多時間搜尋才拼湊出來
- …
害怕榜第 1 名:VBA (80.4%)
全名為 Visual Basic for Applications。它是一種延續傳統的 Visual Basic 的程式語言,它經常被用在微軟的 Office 裡面,像是 Word、Excel 都有內建 VBA 語言。
而在職場上用來資料處理的 Excel 更是 VBA 語言最常出沒的地方。VBA 程式強化了 Excel 本身的功能,使得更容易處理複雜且重複的工作。
看似好用的語言,也可以幫助我們簡化工作流程,那怎麼就變成害怕第 1 名呢?
在我看來,有部分問題是出在管理程式的難易程度。先來看看比較簡單的範例程式,這個片段的意思就是呼叫 helloworld() 方法之後,Excel 會跳出一個 Hello World! 的文字框。
Sub helloworld()
MsgBox "Hello World!"
End Sub
寫一些小程式可能沒問題,但若是你要寫一個稍微有難度的功能,那可能程式就一下子就變得很長了。
當然這一系列的動作可以透過 Excel 巨集來錄製,它也會產生一樣的程式片段。但,若是未來這段程式需要變更,例如 A1 變成 C3,那維護起來就變得更加複雜了。
Sub recorder_example()
Range("A1").Select
ActiveCell.Formula = "John Doe"
Range("A2").Select
ActiveCell.Formula = "=NOW()"
Range("A1:A2").Select
Selection.Font.Bold = True
Selection.Font.Size = 22
Selection.HorizontalAlignment = xlCenter
End Sub
撇除維護的層面,對我來說最困難的應該是那些方法名稱。光是一個儲存格,你想要它條件變色、改字體、大小、字型…等等都可以做到,變化非常複雜。若是呼叫錯方法,一點效果都沒有。
害怕榜第 2 名:Objective-C (76.6%)
Objective-C 是專門用來寫 iOS App 的程式語言。
既然是手機的 App 語言,很多開發者都會想盡量快速完成一個 App 並上架。但是,Objective-C 會成為最害怕的第 2 名是有原因的,它的寫法真的非常繁雜。
我也曾經看過朋友寫過 Objective-C,但我真的看不懂。為了讓你更好理解,我只好貼一段程式碼來嚇嚇你。
我第一眼看到這個方法的時候,完全無法辨識怎麼斷行,還有不懂減號和分號的概念,甚至不知道方法的名稱是什麼。如果你有一點程式的概念,應該很懂我在說什麼。
- (int)max:(int)num1 andNum2:(int)num2 {
int result;
if (num1 > num2) {
result = num1;
} else {
result = num2;
}
return result;
}
雖然這些語法都很基礎,搞懂之後就會看懂,但 Objective-C 對於初學程式語言的朋友來說非常不友善。我會建議你想學 App 開發的話,應該學 Swift 會比較容易上手,而且都有一些共同遵循的程式開發基礎概念。
想學習更多 Swift 和 Objective-C 的概念嗎?那就看看這 30 天的鐵人賽文章吧!
害怕榜第 3 名:Perl (71.4%)
最早的 Perl 語言是在 1987 年問世的,歷經 33 個年頭了。別看它好像很老,現在已經推出到第 5 代了,還有團隊在維護呢!
Perl 很讓工程師害怕的主要原因還是跟語法有關係,語法確實過於複雜難懂,而且是一種無型別的的語言,我也是花了一段時間才漸漸看懂。
不過雖然難懂,但跟 Objective-C 又不太一樣,至少宣告變數或是方法的時候都跟常見的程式語言相似。比較容易搞混的應該是單引號和雙引號的概念不同,然後金錢符號和小老鼠符號各有不同使用時機。
用說的可能不容易懂,我決定還是放一段程式碼來嚇嚇你 XD
$fred = "Fred here";
print 'The variable $fred' . " contains $fred.\n";
# 結果: The variable $fred contains Fred here.
$barney = 56;
$sum = 10 + $barney;
print "Sum is $sum.\n";
# 結果: Sum is 66.
@fred = ("How", "are", "you", "today?");
print "\@fred contains (@fred).\n";
# 結果: @fred contains (How are you today?).
$mike = $fred[1];
print "$mike $fred[2]\n";
# 結果: are you
$fredsize = @fred;
print '@fred has ', "$fredsize elements.\n";
# 結果: @fred has 4 elements.
想自己線上玩玩看,可以去下方的線上環境試看看。
同場加映 PHP 程式語言
害怕榜第 6 名:PHP (62.7%)
身為網站設計師,看到自己曾經學過的語言上榜了,而且名次還很前面,想跟你分享一下自己的一些看法。
PHP 是一個網頁程式語言,無論是在 Linux(最適合)、Windows 作業系統都可以運作,只要有安裝網頁伺服器就可以了,不安裝的話無法打開喔!PHP 可以支援很多資料庫,如 MySQL、PostgreSQL、Oracle…等等。
而 PHP 讓工程師感到害怕的原因也有一些,像是下面的程式碼,你會發現寫法好像跟 Perl 有那麼幾分神似。沒錯,PHP 也是一個無型態的語言。一般來說,程式語言的變數都會有明確的型態,例如它是一個數字,那就宣告成 int;它是一個字母混雜數字的,那就宣告成 string。
PHP 裡面可沒有分型態,$var 可以是多種的型態,因此容易讓人搞混。
<?php
$var = max(2, 3, 1, 6, 7);
echo $var;
// 結果: 7
$var = array("foo", "bar", "hello", "world");
var_dump($array);
// 結果:
// array(4) {
// [0]=>
// string(3) "foo"
// [1]=>
// string(3) "bar"
// [2]=>
// string(5) "hello"
// [3]=>
// string(5) "world"
// }
?>
而 PHP 還有一個讓人崩潰的地方就是它是直譯式語言。用通俗一點的話來說就是電腦會在「用到的」檔案中,一行一行跑過你的程式碼。也就是說,你的程式寫好之後沒有測試完整,剛好有個地方忽略了而有 Bug,那你也不會知道,電腦更不會知道。
世界上還有許多的直譯式語言,像是 JavaScript、CSS、Python、Ruby…等等都是。
相反的,有另外一種稱為編譯式語言,像是 C、C++、C#、Java…等等。它們的好處就是執行程式前會透過編譯器 (Compiler) 將程式轉成電腦看得懂的編碼,因此沒有寫好的地方都會被挑出來。理論上,編譯式語言比直譯式語言有更高的執行效率。
結論
雖然這些程式語言學過語法後會容易懂一點,但就變成你要時常的去運用它,否則忘記規則之後就會再次陷入看不懂的狀態。
這次分享這篇文章目的並不是要讓大家別去學這些語言,之前也分享過一個概念「每種程式語言都有不同的使用時機」,甚至還有很多書籍或是線上課程都在不斷推出,可見還是有需求的。
不知道這篇的內容有沒有幫助到大家,如果太簡單或是還是太抽象,麻煩寫在留言區囉!若是有其他感興趣的話題,也歡迎跟我說,這樣我才有辦法調整撰文方向,甘溫唷!
除了平時寫寫技術文章,我自己也有經營一個攝影部落格,分享攝影技術、開箱以及旅遊,這些內容都不會放在這裡。感興趣的歡迎訂閱喔!
◆ 攝影部落格:https://aidaidme.com/
◆ 歡迎來信:support@aidaidme.com
註:文中圖片源自 Pexel 或 Pixabay