六種流行的語言大餐---C、C++、python、Java、php、C#你更喜歡哪一個呢?

來源:互聯網
上載者:User

標籤:

引言

 

  鑒於五一期間超大的人流量,LZ思來想去,最終還是選擇蝸居在自己的出租屋。無聊之際,當然不能忘了做點什麼事情,於是LZ就研究了一下幾種語言的皮毛,在這裡獻醜一翻,希望各位猿友莫要見笑。

  不過說來也巧,園子裡前段時間剛好上演了一場語言大戰,這讓LZ的這篇博文一出生就可能捲入不必要的紛爭。其實LZ早就想寫這麼一篇文章,只是語言的探究比較麻煩,因為每個語言往往最難搞的就是環境的搭建,而且非常浪費時間,因此LZ就挑了五一這個機會才開始著手進行。

  不管怎麼說,LZ還是要澄清一下,本文只是LZ學習成果的展示,堅決不參加語言大戰。如果猿友們非要問LZ對語言的看法,LZ就只能給你們講一個LZ看過的玄幻小說了。

  這部小說裡面講述的是一個魔法師與武士的世界,每個人出生的時候,身體都會有“金木水火土雷風”這幾種屬性之一的特性,有些天縱奇才會有多種屬性。大家都是從一層練到九層,十層則成神。在這個修鍊體系當中,有一個特殊卻又十分合乎情理的設定,就是在成神之前,大家都會從空氣當中各自汲取相應的屬性元素進行修鍊,以期能領悟天道。不過在領悟天道成了神之後,成神之人的屬性就會消失,甚至連武士與魔法師都再無任何區別。對於成神之人來說,他們操控的,只剩下那至高無上的神力而已。無屬性,無職業。

  好了,故事就講到這裡吧,不知道猿友們看懂了嗎?

 

語言大餐

 

  迴歸正題,本文是六種語言串連mysql資料庫的代碼展示,在LZ嘗試的過程中,無論是語言環境搭建、mysql依賴庫的匯入還是代碼的風格,各種語言都各有千秋。接下來,我們就讓這些語言一一登場吧。

 

Java(最具噱頭的語言)

  

  Java給新人的印象應該是入門簡單、代碼優雅、活躍度高、跨平台、開源大家庭等等,實在是當之無愧的明星語言,而且是偶像派的。不過可惜的是,偶像派明星很容易被幹掉。Java語言是LZ賴以生存的語言,因此LZ不希望做個偶像派,只能奮起直追,爭取做實力派的Javaer。

  說起這次Java串連mysql的編寫,實在沒什麼好說的,畢竟本身就是做這個的,所以這一路非常順利,算是最無感的一個。下面是LZ寫的代碼。

package cn.zxl.jmysql;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class JMysql {        private static final String DRIVER = "com.mysql.jdbc.Driver";    private static final String URL = "jdbc:mysql://localhost/test";    private static final String USERNAME = "root";    private static final String PASSWORD = "123456";    private static final String SQL = "select * from test";        public static void main( String[] args ) {        Connection connection = null;        Statement statement = null;        ResultSet resultSet = null;        try {            Class.forName(DRIVER);            connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);            statement = connection.createStatement();            resultSet = statement.executeQuery(SQL);            while (resultSet.next()) {                System.out.println("|" + resultSet.getString("id") + "|" + resultSet.getString("name") + "|");            }        } catch (Exception e) {            System.out.println("query failed!");        } finally {            try {                resultSet.close();                statement.close();                connection.close();            } catch (Exception e) {                throw new RuntimeException(e);            }        }    }    }

  以下是輸出結果,表示程式是正確的。

  總的來說,Java的mysql串連編寫是最無感的一個,因為這是LZ比較熟悉的。就Java本身而言,LZ對它的打分如下。這裡要特別說明的是,由於其它幾種語言LZ都只是略知皮毛,因此本次只從最直觀的兩個感受去評分。

  入門難度:★★★

  代碼優雅度:★★★★

  

C(最令人崇拜的語言)

  

  這個語言在大學裡LZ就學過一點皮毛,不過當時很厭煩這個無用的傢伙,LZ想要寫的是大型網遊,而不是輸出一個矩陣,或者列印個“心形”去泡妞。不過說來也怪,到得現在,LZ已經做了兩年的程式猿,近半年的PM,卻忽然之間對C這個老傢伙情有獨鐘,敬意油然而生,實在是怪哉怪哉。

  廢話不多說,下面是LZ寫的代碼。

《c_mysql.h》#ifndef C_MYSQL_H_#define C_MYSQL_H_#include <stdio.h>#include <stdlib.h>#include <winsock2.h>#include <windows.h>#include <mysql.h>void execute_sql(char* sql);#endif
《c_mysql.c》#include "c_mysql.h"#define HOST "localhost"#define USERNAME "root"#define PASSWORD "123456"#define DATABASE "test"int main(){    char *sql = "select * from test";    execute_sql(sql);    return 0;}void execute_sql(char* sql){    MYSQL connection;    MYSQL_RES *result_pointer;    MYSQL_ROW result_row;    int result, row, column, i, j;    mysql_init(&connection);    if (NULL == mysql_real_connect(&connection, HOST, USERNAME, PASSWORD, DATABASE, 0, NULL, CLIENT_FOUND_ROWS))    {        printf("Error:connection failed!\n");        return;    }    mysql_query(&connection, "set names gbk");    result = mysql_query(&connection, sql);    if (result)    {        printf("Error:query failed!\n");        mysql_close(&connection);        return;    }    result_pointer = mysql_store_result(&connection);    if (result_pointer)    {        row = mysql_num_rows(result_pointer);        for (i = 1; i < row + 1; i++)        {            result_row = mysql_fetch_row(result_pointer);            printf("|%s|%s|\n", result_row[0] ,result_row[1]);        }    }    mysql_close(&connection);    system("pause");}

  以下是程式的輸出,代表代碼是可正確啟動並執行。

  或許是因為Java無法操縱指標,所以在寫C語言的時候,使用&、*、->這些符號感覺特別爽,不知道真正的Cer是否有這樣的感覺呢。下面是LZ對C語言的打分。

  入門難度:★★

  代碼優雅度:★★★

  

C++(最神秘莫測的語言)

  

  C++作為難度最高的語言,稱之為神秘莫測一點都不過分,能遊刃有餘使用C++的,實在是少之又少。對C++有此印象,主要是因為當時LZ看Java虛擬機器源碼的悲慘經曆,那滿螢幕的宏定義,實在令LZ為自己的智商捉急,同時也被編寫Java虛擬機器的大神們深深折服。

  以下是最高深的語言串連mysql的代碼,請過目。

《c++_mysql.h》#ifndef C___MYSQL_H_#define C___MYSQL_H_#include <iostream>#include <mysql_connection.h>   #include <mysql_driver.h>   #include <statement.h>using namespace sql;   using namespace std;void execute_sql(const SQLString sql);#endif
《c++_mysql.cpp》#include "c++_mysql.h"#define HOST "localhost"#define USERNAME "root"#define PASSWORD "123456"#define DATABASE "test"int main(){    const SQLString sql = "select * from test";    execute_sql(sql);    return 0;}void execute_sql(const SQLString sql){    mysql::MySQL_Driver *driver;       Connection *connection;       Statement *statement;       ResultSet *result_set;       driver = mysql::get_mysql_driver_instance();       connection = driver->connect("tcp://localhost:3306", "root", "123456");       statement = connection->createStatement();       statement->execute("use test");      statement->execute("set names gbk");    result_set = statement->executeQuery(sql);       while(result_set->next())       {           cout << "|" << result_set->getInt("id") << "|" << result_set->getString("name") << "|" << endl;       }       delete statement;       delete connection;      system("pause");}

  以下是輸出結果,代表程式可以正確運行。

  C++這個mysql串連的方式,其API與Java的相似性極高,粗數量級估計大約有90%左右。因此C++的程式除了異常捕捉和記憶體清理與Java有些區別之外,其它的代碼非常相似,但LZ始終覺得使用“.”沒有使用“->”顯得高端,0.0。以下是LZ的評分。

  入門難度:★★★★

  代碼優雅度:★★★

 

php(最低調奢華的語言)

 

  PHP雖然近期也很火,但是總覺得它有點低調,但又不失內涵。作為網站製作最適合的語言之一,它總是默默的在發揮自己的力量。

  以下是PHP串連mysql低調的代碼。

<?php    $mysql_server_name="localhost";    $mysql_username="root";    $mysql_password="123456";    $mysql_database="test";        $connection = mysql_connect($mysql_server_name, $mysql_username,$mysql_password);    if(!$connection) {        echo "connection failed!";        return;    }    mysql_set_charset("gbk",$connection);    mysql_select_db($mysql_database, $connection);    $sql="select * from test";    $result=mysql_query($sql, $connection);    while($row = mysql_fetch_array($result)) {        echo "|".$row["id"]."|".$row["name"]."|\n";    }    mysql_close($connection);?>

  以下是程式運行結果,代表程式是正確的。

  如果仔細觀察會發現,PHP的API與C語言非常相似,這是因為PHP是使用DLL來擴充的mysql操作導致的。此外,PHP與前面三個不同的是,它不是編譯型語言,是一種服務端的指令碼語言,因此LZ選擇使用命令來執行它。以下是LZ對它的評分。

  入門難度:★★★

  代碼優雅度:★★★★

 

C#(最具潛力的語言)

  

  C#最近雖然也算火爆,但卻似乎一直有些力不從心的感覺,儘管LZ非C#成員,但也認識不少C#程式猿。不過LZ個人覺得,進階形態是語言的趨勢,因此像C#、Java、Object-c這種被高度封裝的語言總會發光發熱,畢竟再退回幾十年前去,使用彙編甚至二進位去寫代碼的日子肯定是不會再到來了。

  以下是C#串連mysql資料庫的代碼。

using System;using System.Collections.Generic;using System.Linq;using System.Text;using MySql.Data.MySqlClient;namespace CSMysql{    class Program    {        static void Main(string[] args)        {            MySqlConnection connection = new MySqlConnection("Database=‘test‘;Data Source=‘localhost‘;User Id=‘root‘;Password=‘123456‘;charset=‘utf8‘;pooling=true");            MySqlCommand command = new MySqlCommand();            command.Connection = connection;            command.CommandText = "select * from test";            try            {                command.Connection.Open();                MySqlDataReader reader = command.ExecuteReader();                while (reader.Read())                {                    Console.WriteLine("|" + reader.GetInt32("id") + "|" + reader.GetString("name") + "|");                }                Console.ReadLine();            }            catch (Exception)            {                Console.WriteLine("query failed!");            }            finally            {                command.Connection.Close();            }        }    }}

  以下是程式運行結果,代表著程式是可以正確啟動並執行。

  C#的API有些特別,而且看到有command就難免讓人聯想到command模式,不知這API裡面的實現是否是command設計模式。總的來說,C#和Java的mysql操作API還是差別比較大的,這讓LZ有點出乎意料。以下是LZ對它的評分。

  入門難度:★★★

  代碼優雅度:★★★★

 

python(最高端大氣上檔次的語言)

  

  對於python來說,LZ之前就已經寫過一篇小博文,無論從哪個角度來講,這個語言都給LZ一種高大上的感覺。無論是它霸氣的指令碼語言特有的文法,還是特別的編碼格式要求,都讓LZ心生嚮往。

  以下是python高端大氣上檔次的代碼。

# coding=utf-8import MySQLdbimport sys host = ‘localhost‘user = ‘root‘password  = ‘123456‘   db   = ‘test‘  if __name__ == ‘__main__‘:    connection = MySQLdb.connect(host,user,password,db);    try:        connection.ping()    except:        print (‘failed to connect MySQL.‘)    sql = ‘select * from test‘    cursor = connection.cursor()    cursor.execute(sql)    for row in cursor:        print ("|" + str(row[0]) + "|" + row[1] + "|")    cursor.close()    connection.close()    sys.exit()

  以下是程式輸出結果,代表程式的正確性。

  儘管python在安裝mysql庫的時候曾一度讓LZ一籌莫展,但這依然無法阻止LZ對python的追逐之心。見到python的API可以說讓LZ驚了個呆,實在是簡潔至極,別具匠心。好了,多的就不說了,分數代表LZ的心。

  入門難度:★★★

  代碼優雅度:★★★★★

 

小結

  

  到此,六種語言的簡單展示就結束了。就本次語言小旅遊來說,LZ更喜歡python這塊地,簡潔的文法和API直接征服了LZ。不知道各位猿友有沒有對哪個怦然心動呢?

/\/\\  /  \/

六種流行的語言大餐---C、C++、python、Java、php、C#你更喜歡哪一個呢?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.