Hello World

你好世界

你好世界

一切都始于 Hello World,每个开发人员都曾经编写过 hello world 或遇到过类似的代码。在编程和计算领域,一切都必须从基本案例开始才能发展。 Hello World 这个术语出现在 1972 年 Brian Kernighan 撰写的《C 编程语言》第一章中,包含的代码是:

int main() { printf("你好世界!\n"); 返回0; }

“这是用 printf 展示 C 语言示例的最简单、最快的方法”

从那时起,该术语变得非常普遍,通常用于教导如何以某种语言在屏幕上显示消息。您可以在 [Hacktoberfest-2018/Hello-world15] 存储库中找到几乎所有编程语言的示例。

在本出版物中,我打算记录我对编程语言之间的差异、优点和缺点的研究。出于说明目的,我将显示该语言的 Hello World,并在下方显示与其源的比较。我们走吧:

前端

##反应 应用程序.tsx

从“react-dom”导入作为ReactDOM; 从“react”导入 as React; 从“./components/helloWorld”导入HelloWorld;

const rootElement: HTMLElement = document.getElementById("rootElement"); if (根元素) { ReactDOM.render( <HelloWorld问候语=“你好世界!”/>, 根元素, ); }

组件/helloWorld.tsx

从“react”导入* as React;

接口 IProps { 问候语:字符串; }

导出默认类 HelloWorld 扩展 React.Component<any, any> { 公共渲染():JSX.Element { 返回( {this.props.greeting} ); } }

“React(有时称为 React.js 或 ReactJS)是一个用于创建用户界面的开源 JavaScript 库。它由 Facebook、Instagram 以及个人开发者和其他公司的社区维护。根据 JavaScript 分析服务 Libscore 的数据,React 正在 Netflix、Imgur、Feedly、Airbnb、SeatGeek、HelloSign、Walmart 等网站上使用。[[1]16#cite_note-1)。” [维基百科17)

优势

  • 单向数据流
  • 良好的调试工具
  • 易于重复使用组件
  • 服务端渲染
  • 易于测试且易于编写测试
  • 支持虚拟DOM
  • 使用 React Native 进行快速移动开发
  • 做出正确决定的更大自由,并将更多控制权掌握在您手中。 [无主见18
  • 独立于模板引擎(Template engine)

缺点

  • 详细
  • 占用大量内存
  • 不支持旧版浏览器
  • 不是一个完整的解决方案
  • 你必须学习新的语法

最终意见

附加信息

大小:缩小后为 145KB

##VueJS 应用程序.vue

<模板>

<脚本> 从 './components/HelloWorld.vue' 导入 HelloWorld 导出默认值{ 名称:'应用程序', 组件:{ 你好世界 } } </脚本>

组件/helloWorld.vue

<模板>

</模板>

<脚本> 导出默认值{ 名称:'你好世界', 道具:{ 消息:字符串 } } </脚本>

“Vue.js(通常称为 Vue;发音为 /vjuː/,如 view)是一个用于构建用户界面和单页应用程序的开源 JavaScript 框架。[[4]19 ” [Wikipedia20 ]

优势

  • 学习曲线低
  • 易于在项目中实施

缺点

  • 像 React(来自 Facebook)和 Angular(来自 Google)这样的大竞争对手
  • 大量亚洲语言的材料

最终意见

附加信息

大小:缩小后为 21KB

角度

应用程序.js

var app = angular.module("app", []); app.controller("HelloController", function($scope) { $scope.helloworld = "你好世界!"; } );

索引.html

<正文>

</正文>

“Angular(通常称为“Angular 2+”或“Angular 2”)是一个基于 TypeScript 的开源前端 Web 应用程序平台,由 Google Angular 团队以及个人和公司社区领导。Angular 是 AngularJS 的完全重写,由构建它的同一团队制作。” [维基百科21)

优势

  • 庞大的第三方组件生态系统
  • 简单直接的数据连接
  • 支持可与指令组合的面向组件的架构
  • 庞大的社区
  • 提供依赖注入器

缺点

  • 陡峭的学习曲线
  • 几乎必须使用 Typescript
  • 难以使用服务器端渲染
  • 显式配置
  • HTML模板不符合标准

最终意见

附加信息

尺寸:

##后端

C-Lang

int main() { printf("你好世界!\n"); 返回0; }

“C[[2]22#cite_note-2) 是一种由国际标准化组织 (ISO) 标准化的通用、结构化、命令式、过程式、编译型编程语言,由 AT&T 贝尔实验室的 Dennis Ritchie 于 1972 年创建,用于开发 Unix 操作系统(最初用汇编语言编写)。[[3]2323#cite_note-unix-3)" [维基百科24)

##Python

打印('你好世界!')

“Python 是一种高级、[[4]25° 解释型、脚本型、命令式、面向对象、函数式、动态类型和强大的编程语言。它由 Guido van Rossum 于 1991 年推出。[[1]26° 它目前拥有一个开放的社区开发模型,由非营利性 Python 软件基金会管理。虽然该语言的各个部分都有正式的标准和规范,但该语言作为一个整体还没有正式指定。” [维基百科27

节点(JavaScript)

窗口.onload = () => { document.write('你好世界!'); }

“JavaScript 是一种解释性编程语言。[2] 它最初是作为网络浏览器的一部分实现的,以便脚本可以在客户端执行并与用户交互,而不需要该脚本通过服务器、控制浏览器、执行异步通信和更改显示文档的内容。” [维基百科28

“Node.js 是一个开源 JavaScript 代码解释器,专注于将客户端 Javascript 迁移到服务器。其目标是帮助程序员创建高度可扩展的应用程序(例如 Web 服务器[1]),其代码能够在单个物理机器上处理数万个同时连接。[2]” [Wikipedia29 ]

##Java

公共类主要{ 公共静态无效主(字符串[] args){ System.out.println("你好世界!"); } }

“Java 是一种面向对象的编程语言,由 Sun Microsystems 公司的 James Gosling 领导的程序员团队于 90 年代开发。与编译为本机代码的传统编程语言不同,Java 语言被编译为由虚拟机(Java 虚拟机,简称 JVM)解释的字节码。Java 编程语言是 Java 平台的传统语言,但不是唯一的语言。” [维基百科30)

红宝石

放上“你好世界!”

“Ruby 是一种多范式解释型编程语言,最初由 Yukihiro“Matz”Matsumoto 于 1995 年开发,用作脚本语言。Matz 想要一种比 Perl 更强大、比 Python 更面向对象的脚本语言。Perl、Smalltalk、Eiffel、Ada 和 Lisp 在许多方面与 Python 非常相似。[[5]32·#cite_note-About-5) Ruby 是其中之一根据 RedMonca 进行的一项调查,有 69 种最古老的语言。

##Go语言

包主

导入“fmt”

函数主() { fmt.Println("你好世界!") }

“Go 是一种由 Google 创建的编程语言,并于 2009 年 11 月开源发布。它是一种专注于生产力和并发编程的编译语言,[[4]35#cite_note-design-faq-4) 基于在名为 Inferno 的操作系统上完成的工作。[[5]36#cite_note-libmach-5) 该语言的初始设计由 Robert Griesemer、Rob Pike 于 2007 年 9 月完成Ken Thompson。[[4]37#cite_note-design-faq-4) 目前,有针对 Windows、Linux、Mac OS 的实现

##PHP

<正文>

PHP(“PHP:超文本预处理器”的递归缩写,最初是“个人主页”)是一种自由解释语言,最初仅用于开发服务器端存在和活动的应用程序,能够在万维网上生成动态内容。它还生成要在客户端查看的网页。该语言已经发展,现在提供了命令行功能,此外,它还获得了额外的功能,这些功能使得 PHP 能够使用与网站无关的其他用途。在大多数操作系统上都可以免费安装 PHP。 [维基百科41

这是扩展的语言列表,保持与原始文件相同的布局和组织。我添加了新语言,其中包含示例、优点、缺点和附加信息以保持一致性:


了解更多语言

除了已经介绍的语言之外,还有其他语言在现代发展中也值得强调。下面,我们将详细探讨其中的一些内容。

铁锈

Rust 是一种专注于安全性的现代编程语言,尤其是关键系统。它可以在不牺牲性能的情况下精确控制系统资源。

Hello World 示例

0

背景和应用:
Rust 由 Graydon Hoare 于 2010 年创建,旨在成为 C 和 C++ 的安全替代品,重点是防止内存泄漏和不安全并发等常见错误。

Rust 的优点

  • **内存安全:**消除诸如空指针或无效访问之类的问题。
  • 高性能: 将低级效率与现代抽象相结合。
  • **资源管理:**不需要垃圾收集器,减少开销。
  • 活跃社区: 来自开源社区的大力支持。

Rust 的缺点

  • 高学习曲线: 它最初的复杂性对于初学者来说可能具有挑战性。
  • 小生态系统: 尽管在不断增长,但与旧语言相比,它的库仍然较少。

附加信息

  • 大小: 生成的二进制文件通常经过优化且紧凑。

科特林

Kotlin 是 JetBrains 开发的一种现代语言,旨在与 Java 进行互操作。由于其简单性和健壮性,它在 Android 开发中被广泛使用。

Hello World 示例

1

背景和应用:
Kotlin 于 2016 年正式推出,很快被 Android 生态系统采用,成为该平台的官方移动开发语言。

Kotlin 的优点

  • 与 Java 的互操作性: 促进遗留项目的迁移。
  • 干净的语法: 减少冗长并提高可读性。
  • 类型安全: 防止编译期间出现多种类型的错误。
  • 官方支持: Google 认可用于 Android 开发。

Kotlin 的缺点

  • 学习曲线: 对于有经验的Java开发人员来说,可能会有一个适应期。
  • 初始性能: 在某些情况下,启动时间可能会更长。

附加信息

  • 大小: 与 Java 相比,开销较小,但长期性能更好。

##斯威夫特

Swift 是 Apple 创建的一种编程语言,主要旨在开发 iOS、macOS、watchOS 和 tvOS 应用程序。

Hello World 示例

2

背景和应用:
Swift 于 2014 年推出,旨在逐步取代 Objective-C 成为 Apple 设备的主要开发语言。

Swift 的优点

  • **易于学习:**其简单的语法吸引了初学者开发人员。
  • **卓越的性能:**与 Objective-C 相比具有更好的性能。
  • 安全性: 显着减少常见的编程错误。
  • 交互式游乐场: 学习和快速原型设计的理想工具。

Swift 的缺点

  • Apple 独占权: 仅限于 Apple 平台,限制其在其他环境中的使用。
  • 快速演变: 频繁的更改可能需要不断的代码更新。

附加信息

  • 大小: 生成的二进制文件针对移动设备进行了高度优化。

打字稿

[TypeScript 42 是一种 JavaScript 扩展,添加了静态类型和高级功能,使开发大型复杂应用程序变得更加容易。

Hello World 示例

3

背景和应用:
由 Microsoft 开发的 [TypeScript43 广泛应用于前端和后端项目,尤其是像 Angular 这样的框架中。

TypeScript 的优点

  • 静态类型: 帮助在执行之前识别错误。
  • JavaScript 集成: 与现有 JavaScript 代码完全兼容。
  • 高级工具: 对 IDE 和开发工具的强大支持。
  • 丰富的生态系统: 各种各样的兼容库和框架。

TypeScript 的缺点

  • 初始复杂性: 对于那些习惯纯 JavaScript 的人来说可能会感到困惑。
  • 额外编译: 需要额外的步骤来转换为 JavaScript。

附加信息

  • 大小: 根据所使用的依赖项而变化。

斯卡拉

Scala 是一种混合语言,结合了面向对象和函数式编程,运行在 JVM 上。

Hello World 示例

4

背景和应用:
Scala 旨在成为 Java 的优雅替代品,广泛应用于大数据和分布式系统。

Scala 的优点

  • **函数式编程:**允许您编写更简洁和模块化的代码。
  • Java 兼容性: 轻松与 Java 库集成。
  • 简单的竞争: 像 Akka 这样的模型可以轻松创建并发系统。
  • 高性能: 在JVM上执行,保证高性能。

Scala 的缺点

  • 陡峭的学习曲线: 它的复杂性对于初学者来说可能具有挑战性。
  • 有限的文档: 与 Java 相比,可用功能较少。

附加信息

  • 尺寸: 根据项目的不同,可能会有很大差异。

灵丹妙药

Elixir 是一种基于 Erlang 虚拟机 (BEAM) 构建的函数式语言,非常适合分布式和高度可扩展的系统。

Hello World 示例

5

背景和应用:
Elixir 由 José Valim 于 2011 年创建,以其处理数百万个并发连接的能力而闻名,被广泛用于 Web 服务器。

Elixir 的优点

  • 本地竞争: Actor 模型允许您创建弹性系统。
  • **稳健性:**继承Erlang虚拟机的稳定性。
  • 现代语法: 比 Erlang 更具可读性和生产力。
  • 丰富的生态系统: 像 Phoenix 这样的框架促进了[网络开发44。

Elixir 的缺点

  • 采用有限: 不如其他语言流行,导致支持较少。
  • 学习曲线: 函数式编程对于许多开发人员来说可能是新的。

附加信息

  • 大小: 内存和 CPU 方面高效。

##R

R 是一种专注于统计和数据分析的编程语言。它广泛应用于数据科学、学术研究和机器学习。

Hello World 示例

6

背景和应用:
R 由 Ross Ihaka 和 Robert Gentleman 于 20 世纪 90 年代开发,已成为数据科学家和分析师不可或缺的工具,为数据操作和可视化提供了强大的工具。

R 的优点

  • 强大的库: 12、13 和14 等软件包有助于数据分析和可视化。
  • 学术界: 在研究和统计领域提供大力支持。
  • 高级图表: 能够轻松创建复杂的可视化效果。
  • 与其他语言集成: 可以与Python、SQL等技术结合。

R 的缺点

  • 性能有限: 与 Python 或 C++ 等语言相比,它在处理大量数据时可能会更慢。
  • 学习曲线: 它的特定语法对初学者来说可能具有挑战性。

附加信息

  • 大小: 根据安装情况,根据所使用的软件包而有所不同。

朱莉娅

Julia 是一种专为科学计算和数据分析而设计的高性能语言。它结合了 Python 的简单性和 C 的速度。

Hello World 示例

7

背景和应用:
Julia 于 2012 年推出,旨在解决数学、物理和工程领域的高性能问题,是密集数值计算的理想选择。

朱莉娅的优点

  • 速度: 代码实时编译,性能与 C 类似。
  • 简单的语法: 对于熟悉 Python 或 MATLAB 的人来说很容易学习。
  • 本机并行性: 对并行和分布式计算的内置支持。
  • 与其他语言集成: 可以调用 C、Python、Fortran 代码等,无需大量开销。

朱莉娅的缺点

  • 较小的生态系统: 尽管在不断增长,但它的库仍然比 Python 或 R 少。
  • 有限采用: 在某些工业领域不太受欢迎。

附加信息

  • 大小: 生成的二进制文件针对效率进行了优化。

飞镖

Dart 是 Google 开发的一种语言,旨在以高效和模块化的方式创建 Web、移动和桌面应用程序。

Hello World 示例

8

背景和应用:
Dart 创建于 2011 年,随着 Flutter 框架的出现而声名鹊起,实现了高质量的跨平台开发。

Dart 的优点

  • Flutter 集成: 非常适合创建本机移动应用程序。
  • 静态类型: 帮助在执行之前识别错误。
  • 多平台编译: 生成适用于 Android、iOS、Web 和桌面的本机代码。
  • 现代工具: 内置 IDE 和调试器使开发更加容易。

Dart 的缺点

  • 有限采用: 在 Flutter 生态系统之外不太受欢迎。
  • 具体文档: 许多功能仅在 Flutter 上下文中进行记录。

附加信息

  • 大小: Flutter框架可能很大,但最终的代码是高度优化的。

哈斯克尔

Haskell 是一种纯函数式语言,以其优雅和数学严谨而闻名。它经常用于教育和研究。

Hello World 示例

9

背景和应用:
Haskell 创建于 1990 年,主要被重视代码稳健性和正确性的大学和公司采用。

Haskell 的优点

  • 纯函数式编程: 提倡干净且数学上准确的编码风格。
  • 惰性求值: 惰性求值允许您使用无限数据结构。
  • 类型安全: 显着减少编译期间的类型错误。
  • 学术界: 在高级研究领域的大力支持。

Haskell 的缺点

  • 高学习曲线: 函数概念对于初学者来说可能很困难。
  • **较小的生态系统:**与命令式语言相比,可用的库较少。

附加信息

  • 大小: 在内存和处理方面高效。

月亮

Lua是一种轻量级、灵活的语言,广泛应用于游戏和嵌入式应用程序中。

Hello World 示例

10

背景和应用:
Lua 由 PUC-Rio 于 1993 年开发,以其简单性和易于与其他语言集成而闻名。

Lua的优点

  • 轻便: 占地面积小,非常适合资源有限的系统。
  • 轻松集成: 易于合并到用 C 或 C++ 编写的应用程序中。
  • 简单的语法: 易于学习和使用,即使对于初学者也是如此。
  • **在游戏中的受欢迎程度:**广泛应用于Unity和Unreal Engine等引擎。

Lua 的缺点

  • 性能有限: 在某些情况下,它可能不如编译语言快。
  • **较小的生态系统:**与更流行的语言相比,可用的库更少。

附加信息

  • 大小: 生成的二进制文件紧凑且高效。

二郎

Erlang 是一种为分布式并发系统设计的函数式语言,广泛应用于电信领域。

Hello World 示例

11

背景和应用:
Erlang 由爱立信于 1986 年创建,以其处理数百万个并发连接的能力而闻名。

Erlang 的优点

  • 本地竞争: Actor 模型允许您创建弹性系统。
  • 稳健性: 项目专注于高可用性和故障恢复。
  • 水平可扩展性: 分布式系统的理想选择。
  • 活跃社区: 在电信和服务器领域提供大力支持。

Erlang 的缺点

  • 学习曲线: 函数式编程对于许多开发人员来说可能是新的。
  • 有限采用: 在电信行业之外不太受欢迎。

附加信息

  • 大小: 内存和 CPU 方面高效。

结论

这里提到的语言反映了现代编程世界的多样性和特定需求。每个都有其独特的功能,允许开发人员为每个用例选择最佳的工具。

无论您是初学者还是经验丰富的专业人士,尝试不同的语言都可以拓宽您的技能,并提高您高效、创造性地解决问题的能力。

另请阅读

  • [生产中的 Cloudflare Workers:hello world 之后发生了什么变化46