🤖 作者:包瑞清(Richie Bao): lastmod: 2024-07-07T07:32:16+08:00

4门编程语言的比较学习,最好是使用同一个集成开发环境(Integrated Development Environment,IDE),避免在不同 IDE 间切换,增加学习的成本。能够同时满足 Python(Py)、C、C++ 和 C# 学习或开发的 IDE,首选 Visual Sudio(VS)。 VS 有 3 个版本,分别为社区(Community)、专业(Professional)和企业(Enterprise),本书使用免费的社区版本。下载 VS 后,安装过程中会提示选择安装的模块,需勾选包含有 Py、C++/C 和 C# 的模块,有 Python development、Desktop development with C++、.NET desktop development 和 Windows application development,如图1-1。

PYC icon

图 1-1 VS 安装勾选模块

1.1 创建一个新项目(工程)

❶ 在应用程序菜单中选择 VS,启动应用,开始界面如图1-2。对于4门编程语言均选择 Create a new project 选项建立新项目。

PYC icon

图 1-2 启动 VS 后的开始界面

接下来的弹出窗口会根据所选编程语言的不同而有所差异。

1.2 编写第1个程序

1.3 [Py,C,C++,C#] 基本语法规则比较(🌟)

语法规则 Py C C++ C#

第1个程序

  print("Hello Python!")
  
  #include <stdio.h>

int main() {
	printf("Hello C!\n");
	return 0;
}
  
  #include <iostream>

int main()
{
    std::cout << "Hello C++!\n";
}
  
  Console.WriteLine("Hello, C#!");
  

完整的 C#:

  using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("Hello, C#!");
    }
}
  

诞生日期(首次发布)和发明者

1991,Guido van Rossum 1972,Dennis Ritchie

C (/ˈsiː/ c)

1985,Bjarne Stroustrup

C++ (/ˈsiː plʌs plʌs/ C plus plus,有时缩写为 CPP)

2000,Anders Hejlsberg( Microsoft,微软);

C# (/ˌsiː ˈʃɑːrp/ see SHARP)

编程语言类型[附1] 解释型语言 编译型语言 编译型语言 半编译半解释型混合模式

动态类型语言和静态类型语言

动态类型语言为运行期间才做数据类型检查的语言,书写代码时不需要为任何变量指定数据类型。静态类型语言在编译过程中检查数据类型,书写代码时需要声明所有变量的数据类型。

动态类型语言 静态类型语言 静态类型语言 静态类型语言
代码块表示 采用强制缩进区分不同代码块,表示代码结构,提供清晰的视觉指示,使得代码易于编写、阅读,理解和维护。每行代码的结束通常不需要任何特殊符号 代码块的定义是通过大括号 `{}` 来实现,即将一组语句组织成一个逻辑单元。代码块通常用于定义函数体、控制结构(条件、循环语句等)和复合语句。通过大括号 `{}`的合理使用,可以提高程序的可读性、安全性和灵活性。每个语句通常必须以分号 `;` 结束。 与 C 语言类似 与 C 语言类似
变量声明 不需要显示声明变量类型。在赋值时,解释器会根据语法和右侧的操作数确定新对象的类型 变量声明时必须指定变量类型,编译器在编译时检查类型以分配内存空间,为显示声明 与 C 语言类似,需要显示声明类型。但可以使用 `auto` 关键字让编译器自动推断变量类型 与 C 和 C++ 类似,需要显式声明类型。可以使用`var`关键字让编译器自动推断变量类型
注释:通常包含单行注释和多行注释。单行注释适用于简短得解释和备注。C、C++ 和 C# 注释的形式基本同。

单行注释以井号 # 开头;多行注释用三引号括起。

  # 这是一个单行注释

"""
这是用三引号括起的多行注释,
因为没有分配给任何变量,
解释器会忽略该注释。
"""
  
单行注释以井号 `//` 开头;多行注释用`/* */`括起。
  // 这是一个单行注释

/*
这是多行注释。
可以包含多行注释内容。
这些内容在编译时会被忽略。
*/
  
与 C 语言类似 与 C 语言类似
内存管理 自动内存管理,内置垃圾回收机制。使得编程更加容易和快捷,减少内存泄漏等问题 完全手动内存管理,需要显式地分配和释放内存。适合对性能和内存控制要求极高的场景,例如操作系统和嵌入式系统开发 支持手动内存管理,同时提供智能指针进行自动内存管理。适合需要灵活控制内存但又希望提高工作效率的场景 完全自动内存管理,使用垃圾回收(garbage collection,GC)机制,自动管理内存分配和释放,大大简化了内存管理的复杂性。适合快速开发和易于维护的应用程序,例如企业级应用和 web 开发
是否支持面向对象编程(Object-oriented programming,OOP)[附3] 完全支持面向对象编程 本身并不直接支持面向对象编程,但可以通过结构体和函数指针模拟 OOP 的部分特性 完全支持面向对象编程 完全支持面向对象编程
第三方库和社区支持

拥有大型标准库和第三方库。并有强大社区支持及可获取的大量文档资源

拥有广泛的第三方库和强大的社区支持

提供强大的标准库和丰富的第三方库,社区活跃

依托 .NET frame 和 [NuGet](https://www.nuget.org/) 包管理系统,拥有现代化的开发工具和良好的社区支持