Java:可靠,但冗长。
public class HelloWorld {
public static void main(String[] args) {
System.out.println(大Hello, World!");
}
}
该语言本身相当简单直接。你几乎从来没有发现让你惊讶的东西,这是一件好事。社区已经为java构建了一些真正高质量的库和框架。它可以很好地与后端服务(如数据库和消息传递引擎)一起工作。
我对java的主要批评是它太啰嗦了。每天,像创建数据类这样的事情都需要大量的样板代码,这在一定程度上阻碍了生产力。看到hello world应用了吗?只有1/2行与打印hello world有关,其余都是纯粹的样板。
它对企业应用程序非常有用。
C:又快又简单,但很原始。
#include<stdio.h>
main()
{
printf("Hello, World!");
}
C编译成非常好的机器代码。几乎不可能在性能上击败C。
这种语言相对简单易懂。
C语言不是一门特别高效的语言。它没有面向对象或函数特性。它没有垃圾收集器。对于列表和字符串等常见数据结构,没有高级抽象。没有错误处理、泛型编程、函数式编程等特性。人们一遍又一遍地重新发明轮子。C给了你足够的绳索来吊死自己。它基本上是便携式组件。您需要一个有能力的开发人员来避免缓冲区溢出、悬浮指针和内存泄漏。
它非常适合底层编程:内核、驱动程序、微控制器、视频编解码器、等等……
C++:快,但复杂
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!";
return 0;
}
C++(几乎)是C语言的超集。它具有非常好的性能,并解决了c语言的一些缺点。它包含一个标准库,具有通用的数据结构,如关联数组、列表和字符串,这有助于提高工作效率,并使代码更容易阅读。
他们试图保持与C语言的向后兼容,这意味着它有很多C语言的包袱,并遭受一些相同的问题。
C++是一头野兽,它可能是最难学的语言之一,因为它有太多的特性和庞大的库。它遭受功能蠕变。很难找到有能力的c++开发人员,所以很多代码都写得很糟糕。如果你擅长c++,你就处于食物链的顶端。
它适合于编写可移植的高性能应用程序。在游戏开发中非常受欢迎。流行于桌面应用程序,如浏览器,媒体播放器,办公套件等....
C#:优雅实用,但windows优先
using System;
Console.WriteLine("Hello, World!");
C#是Java的强大竞争对手,而且显然受到了Java的启发。C#修复了java存在的许多问题,并添加了一些有用的特性,如具体化泛型、值类型、async/await、unsigned类型、代码生成器和堆栈分配。它还添加了提高生产力的语法糖,如空合并、模式匹配、自动属性、记录、LINQ和顶级语句。
C#最初是一种仅用于windows的语言。在撰写本文时,仍然有一些功能只能在windows上工作,最显著的是GUI框架。因此,多年来java一直是开源爱好者的首选。结果,java拥有了一个更大的社区,有许多java框架和库在c#中没有对等的,或者质量低劣。
它非常适合编写windows桌面应用程序。它也非常适合Unity游戏。
Python:简单但缓慢
print("Hello, World!")
Python是一种表达能力很强的语言。您可以用很少的代码完成很多工作。它显然是在尽量减少您需要的语法量,并使常见的事情变得简单。做某事通常有一个简单明显的方法。看到hello world程序有多简单了吧?
在您给我的所有其他选项中,python是惟一具有动态类型的选项。这使它在性能方面处于非常不利的地位。用python编写的相同算法可能比C慢几个数量级,即使使用像pypy这样的JIT也是如此,因为它不能进行特定于类型的优化。
很多时候,语言表现并不重要。例如,如果你正在编写一个web应用程序,瓶颈就是数据库或网络。在典型的桌面应用程序中,应用程序99%的时间都在等待用户单击某个内容。即使您要将代码加快1000倍,也只能节省几毫秒。
有时语言性能确实很重要,比如在编写编译器、游戏、视频处理工具、人工智能、加密等……
动态类型也使重构变得困难。如果你有一个很大的代码库,你想要改变一个方法的名称或变量的类型,你没有一个编译器来检查它在哪里被使用。捕获这些错误的唯一方法是运行。
对于原型、初学者语言、性能不敏感的简单小众应用程序和自动化任务来说,这是非常棒的。它在机器学习中也非常受欢迎。机器学习对性能非常敏感,因此在这个领域,python被用作用C编写的库的粘合剂。