六种流行的语言大餐---C、C++、python、Java、php、C#你更喜欢哪一个呢?
引言
鉴于五一期间超大的人流量,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-8 import MySQLdb import 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#你更喜欢哪一个呢?相关推荐
- python比java简单好学-21、PHP和python/JAVA比,哪个更好学?
PHP是公认比较容易学习的编程语言. 一般学习半个月左右就可以开发简单网站,一般学习四五天就可以用PHP进行网站的二次开发. 想要学习一种技能,先要知道这个技能是什么,有什么用, 尤其对于零基础又想学 ...
- 5种流行的Linux发行版:你更喜欢哪一个呢?
现如今,对于各种类型的用户(如桌面用户.服务器管理员.图形设计者等)而言Linux已经成为一种最流行的操作系统.Linux是免费且开源的,任何人都可以建立和编译它的源代码,并将它分发给别人.这就是为什 ...
- C++/Python/Java/C,四大语言对比,你更喜欢哪种?
现如今,互联网时代已经是风生水起,IT技术人才更是层出不穷.但学习在精不在多,总要有一方面精通才是自己的资本.面对众多的编程语言,Java.C语言.C++.Python等编程,你更喜欢哪种? 虽说C语 ...
- 没学c语言可以学python_没学过c语言 可以直接学Python吗
可以的,不过先学C语言,比较适合对计算机语言的理解,用于入门语言的话,后面学其他语言很简单www.mh456.com防采集. Python是一种解释型.面向对象.动态数知据类型的高级程序设计语言.哈哈 ...
- HOJ 系统常用功能介绍 部署快速入门 c++ python java编程语言在线自动评测 信息奥赛一本通 USACO GESP 洛谷 蓝桥 CSP NOIP题库
技术支持微 makytony 服务器配置需求 腾讯云 2H4G 5M 60GB 轻量应用服务器 承载大约 200~400人使用,经过压力测试,评测并发速度可满足130人左右的在线比赛. 系统镜像选 ...
- 马云称双11对阿里没什么意义;Python成为GitHub第二流行的语言;华为首款可折叠屏5G手机今日开售 | EA周报...
EA周报 2019年11月15日 每个星期7分钟,元宝带你喝一杯IT人的浓缩咖啡,了解天下事.掌握IT核心技术. 热点大事件 马云称双十一对阿里没多大意义,只是一次技术测试 11月13日,在第五届世界 ...
- python是c语言写的吗-python是用c写的吗
python是用c写的,下面给大家介绍一下Python与c的联系: python的诞生 1991年,第一个Python编译器(同时也是解释器)诞生.它是用C语言实现的,并能够调用C库(.so文件).从 ...
- python语言的主网址-python官方网站
广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 由于整个python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人 ...
- Python:Python语言的简介(语言特点/pyc介绍/Python版本语言兼容问题(python2 VS Python3))、安装、学习路线(数据分析/机器学习/网页爬等编程案例分析)之详细攻略
Python:Python语言的简介(语言特点/pyc介绍/Python版本语言兼容问题(python2 VS Python3)).安装.学习路线(数据分析/机器学习/网页爬等编程案例分析)之详细攻略 ...
最新文章
- 转:[大数据竞赛]协同过滤在这个问题上是否work
- 打开一个解决方案时弹出“项目所需的应用程序未安装,确保已安装项目类型(.csproj)的应用程序”问题的解决方案
- MATLAB之相关函数
- 关于apt-get remove 与 apt-get purge
- 用css3实现ps蒙版效果+动画
- java aes 解密 文件_Java AES文件加解密
- .NET 3.5 : 读写RSS或者ATOM
- 第三方支付,微信支付及支付宝的一些入门了解
- 第四次实验任务 任务一
- java treemap指定排序_TreeMap按照key排序
- PostgreSQL+PostGIS下载和离线安装
- android网络权限动态,Android权限详解(含6.0动态申请)
- 炒黄金短线交易如何放大收益
- Appium-Get Orientation(获取定位)
- 8421码 2421码 5421码和余3码的使用
- 企业如何实现IoT物联网远程控制
- MobileNet实战:tensorflow2.X版本,MobileNetV3图像分类任务(小数据集)
- RGB-D 显著性目标检测:全面调研(2012-2020)
- 使用 OpenCV 构建带有二维码扫描仪的用户认证系统
- python+pyqt5