1. 程式人生 > >從Java、C、Ruby、JS等的HelloWorld領略它們的不同

從Java、C、Ruby、JS等的HelloWorld領略它們的不同

程式語言分類
從不同的角度,程式語言有幾種不同的分類方式。根據“需不需要事先宣告變數型別”可以將程式設計語言分為:Dynamic Typed Language(動態程式語言)和 Statical Typed Language;根據“會不會隱性自動轉換型別”,又可以將程式語言分為:Strong Typeing Language(強型別語言)和 Weak Typeing Language(弱型別語言),如下圖:
程式語言型別

從HelloWorld領略幾種程式語言的不同
以下列出主流幾種語言的實現的那著名的HelloWorld:
Java:

public class HelloWorld {
    public
static void main(String[] args) { System.out.println("Hello,World!"); } }

c:

#include <stdio.h>
int main(void){
    printf("Hello,World!");
    return 0;
}

Ruby:

puts "Hello,World!"

Python:

print("Hello,World!")

JavaScript:

console.log("Hello,World!");

首先,不用考慮其他,直觀上來看,Ruby、Python、JS所用的程式碼都是非常短;不知道你們是什麼感覺,我的感覺是一個字:爽!當然這個爽字,不是意味著Ruby、Python、js比Java、C牛叉,它們還是有它們各自的優勢,而且我是最反感“語言大戰”的,本身語言就是用來解決問題了,什麼樣的問題適合選用什麼語言來解決,什麼樣的功能選用什麼樣的語言來實現,這都是針對特定問題的,所以,那種一棒子打死某一種語言的做法,或者說認為自己最擅長的語言就是這個世界裡面最牛逼的語言的想法,我覺得就兩個字:幼稚!
其實,看上面的幾個“HelloWorld”程式,我覺得第一眼的感覺就是最好的感覺,也是最真實的感覺——簡單;Ruby、Python、JS的創作者們在設計它們的時候,都有一個理念:讓它們不要那麼複雜,越簡單越好;而且是更多地從人的角度出發,讓程式設計者用起來更“人性化”——為什麼總要求我們站在計算機的角度思考問題,計算機是為人類的服務的嘛(為什麼總是考慮效能問題,效率問題??O(∩_∩)O~)

當然從這個“Hello,World!”還不足以說明一切,還不能從深層次地角度說明它們的不同以及各自的優勢,這篇文章僅僅是起到拋磚引玉的作用,讓大家從直觀上稍微感受下它們各自的魅力;至於深究它們,還是留給語言學家們!

相關推薦

JavaCRubyJSHelloWorld領略它們不同

程式語言分類 從不同的角度,程式語言有幾種不同的分類方式。根據“需不需要事先宣告變數型別”可以將程式設計語言分為:Dynamic Typed Language(動態程式語言)和 Statical Typed Language;根據“會不會隱性自動轉換型別”,又

Java記憶體模型理解synchronizedvolatile和final關鍵字

        你是否真正理解並會用volatile, synchronized, final進行執行緒間通訊呢,如果你不能回答下面的幾個問題,那就說明你並沒有真正的理解:         1、對volatile變數的操作一定具有原子性嗎?(原子操作是不需要synchron

布爾類型操作符別名C++函數動態內存分配(newdelete)引用(day02)

color 返回 void double 強制 也會 了解 關系 指針 六 C++的布爾類型 1 bool類型是C++中基本類型,專門表示邏輯值:true/false 2 bool在內存上占一個字節:1表示true,0表示false 3 bool類型可以接收任意類型和表達

字串字面值C風格字串C++風格字串

一、字串字面值 字串字面值是一串常量字元,字串字面值常量用雙引號括起來的零個或多個字元表示,為相容C語言,C++中所有的字串字面值都由編譯器自動在末尾新增一個空字元。 字串沒有變數名字,自身表示自身 "Hello World!" //simple string literal "" //em

(一)C++基礎C++風格字串名稱空間引用

1. C++的LInux編譯 在Linux中編譯C++可以用g++或者c++來實現,邏輯格式與C的一樣 2. C++中的標頭檔案變化 C++標準標頭檔案,一律不帶.h,為了區分開C C++中包含了所有標準C標頭檔案,並且重新編譯,重新命名:去掉“.h",並且在檔案明前

No.3 磁碟排程演算法:FCFS演算法SSTF演算法SCAN演算法 C-SCAN演算法 電梯演算法

首先放一張各個演算法全程即縮寫對應關係: 其中最容易搞混的就是SCAN演算法、電梯演算法、和LOOK演算法。SCAN演算法又名電梯演算法,與LOOK演算法不同 下面我們舉個例子,來看一下各個演算法的不同之處: FCFS:先來先服務 SSTF:最短尋道時間優先 SC

C++普通變數C++靜態成員變數C++成員常量C++靜態成員常量的初始化方法

    最近複習C++的一些知識,遇到了一個我比較容易混淆、傻傻分不清的知識點,那就是C++的變數的型別初始化或賦初值,大致有普通成員變數、靜態成員變數、成員常量這三種,還有一種組合的靜態成員常量。    看到這幾種資料成員時很尷尬,經常就把某兩種搞混了,所以為了方便和好理解

完成一程式演示字元陣列C風格字串std::string和MFC中的Cstring型別之間的相互轉換

《C++標準函式庫》中說的有三個函式可以將字串的內容轉換為字元陣列和C—string1.data(),返回沒有”\0“的字串陣列2,c_str(),返回有”\0“的字串陣列3,copy().............................................................

C#精通C#程式設計:玩轉開發例項...C#程式設計入門C#程式設計例項C#開發例項與網路程式設計....

            C#是微軟公司釋出的一種面向物件的、運行於.NET Framework之上的高階程式設計語言。並定於在微軟職業開發者論壇(PDC)上登臺亮相。C#是微軟公司研究員Anders Hejlsberg的最新成果。C#看起來與Java有著驚人的相似;它包

Spring第二篇和第三篇的補充【JavaConfig配置c名稱空間裝載集合JavaConfig與XML組合】

前言 在寫完Spring第二和第三篇後,去讀了Spring In Action這本書…發現有知識點要補充,知識點跨越了第二和第三篇,因此專門再開一篇博文來寫… 通過java程式碼配置bean 由於Spring的自動裝配並不能將第三方庫元件裝配到應用中,於是

cocos2d-x 使用JNIJava調C++

最近專案中涉及到Android的移植,要用到java呼叫c++,方法其實也很簡單。 假設java這邊我需要呼叫C++那邊的函式void PaySuccess(int type); 1、在java這邊申明 1

JavaC++——union的使用方法

你是否記得union這個東西,在上大學的時候我們用的是潭浩強的《C語言程式設計》,裡面把它譯作是共用體。“共用體”。儘管翻譯得特別彆扭,但卻正好說明了它的特性和用途。 聯合(union。也有翻譯成共用體的)是一種特殊的結構(或說類)。 一個union能夠有多個數據成員,

android javaC層檔案讀取流程

Java中常用的檔案讀寫的兩個類: 1.FileInputStream/FileOutputStream(FileReader/FileWriter) 2.RandomFileAccess FileInputSteam和FileOutputStream繼承於InputStream和OutputStre

JavaC++ — 對比JavaC++程式設計的不同

1. 資料型別和變數 C++ 中的變數型別與Java很相似。像Java一樣,C++ 有int 和 double 型別。但是這些數字型別的取值範圍是依賴於機器的。比如在16位系統上,例如執行DOS 或Windows 3.x的PC機上,int 是雙位元組(2-byte)的,取值

Java小白到收獲BAToffer,分享我這兩年的經驗和感悟

也不能 協調 tag 自信 旅行 java核心技術 虛擬機 ren tps 點擊關註並置頂,江湖要事早提醒 點擊關註並指定,江湖要事早知道 我 常想,人生最有趣莫過於前路未知。於是我常常羨慕那些個“金梁古溫”筆下隨遇而安、隨性而為、隨緣而愛的浪子們。

JavaC++PythonRubyPHPC#和JavaScript的理解

皮膚 叔叔 保持 大學 學校 cti java 等等 無需 Java、C++、Python、Ruby、PHP、C#和JavaScript和日本動漫裏的那些大家熟悉的動漫人物結合起來。依據他們的身世、個人經歷來生動的表達各編程語言的發展歷程。原文內容例

以太坊GoJavaPythonRubyJS客戶端介紹

git 跟蹤 處理 p2p 純java eth 前綴 成功 contents 作者:HPB_汪曉明(HPB Team) Go Ethereum 簡介 go-ethereum客戶端通常被稱為geth,它是個命令行界面,執行在Go上實現的完整以太坊節點。通過安裝和運行get

CC++JavaJavaScriptPHPPythonRuby 這些語言分別主要用來開發什麼?

pansz,歡迎評論 此貼純科普用,以下僅僅說主要用途,其他用途限於篇幅關係省略之,不要鑽牛角尖。 C:系統底層,驅動程式,嵌入式底層,基礎服務程式。 C++:上層服務程式,應用API,大型3D遊戲。 Java:服務端應用程式,以及客戶端應用程式。 JS:在瀏覽器中執行的程式。 PHP:Web伺

CC++JavaJavaScriptPHPPythonRuby這些語言分別主要用來開發什麼?

c語言主要用於底層和驅動,編譯器開發 c語言高效底層,主要用於底層的開發,比如一些系統驅動;unix,linux系統和其上相關應用的開發; 有很多語言比如python、php、perl、ruby等都c語言開發的這些語言的核心庫,編譯器等開發都是c語言。比如鳥哥的php7的開發,就基

【傑瑞的專欄】架構師指令碼語言專家;精通PythonShell正則表示式;熟悉JavaCTclRubyScalaPerl多種程式語言;在效能,開源,自動化測試方面有非常豐富的經驗

傑瑞的專欄 架構師、指令碼語言專家;精通Python、Shell、正則表示式;熟悉Java、C、Tcl、Ruby、Scala、Perl等多種程式語言;在效能,開源,自動化測試方面有非常豐富的經驗...