Однажды на Zoom-созвоне нашей команды нить дискуссии ушла за пределы планируемого. На удаленке такое часто случается, потому что всем не хватает обычного «кухонного» общения в офисе. Разговор начался с итальянской книги, где на всех языках мира написано «Я тебя люблю». Потом были возражения, что языки программирования тоже языки, почему их там нет??? Затем мы вспомнили, что не за горами День всех влюбленных. Так мы придумали, как сделать ремейк этой книги на свой лад, а заодно вспомнить про свежий рейтинг языков программирования от IEEE.
Книгу мы выпустили небольшим тиражом, а в этом посте публикуем ее содержание: признания в любви на 53 самых популярных языках программирования. А в качестве бонуса предлагаем краткое описание каждого из них.
Содержание
- Python
- Java
- C
- C++
- JavaScript
- R
- Arduino
- Go
- Swift
- MATLAB
- Ruby
- Dart
- SQL
- PHP
- Assembly
- Scala
- HTML
- Kotlin
- Julia
- Rust
- Shell
- Processing
- C#
- SAS
- Fortran
- CUDA
- Visual Basic
- Objective-C
- Delphi
- Perl
- Verilog
- VHDL
- Elixir
- F#
- Prolog
- Lua
- Lisp
- Ada
- Apache Groovy
- Scheme
- Haskell
- COBOL
- Clojure
- ABAP
- D
- Forth
- OCaml
- Tcl
- Erlang
- Eiffel
- CoffeeScript
- J
- Racket
1. Python. Объектно-ориентированный и интерпретируемый язык, который в значительной степени опирается на большое количество библиотек, включая популярные модули для машинного обучения и научных вычислений.
print('I love you!')
2. Java. Объектно-ориентированный язык, создающий код, предназначенный для запуска в виртуальной машине. Это позволяет запускать его на разных платформах с незначительными изменениями. Java — популярный выбор разработчиков веб-приложений.
public class ILoveYou
{
public static void main(String[] args)
{
System.out.println("I love you!");
}
}
3. C. Используется для написания программ, в которых важны скорость и гибкость. Например, во встраиваемых системах или высокопроизводительных вычислениях.
#include <stdio.h>
int main(void)
{
printf("I love you!\n");
return 0;
}
4. C++. Объектно-ориентированная версия C, которая оказалась логичным продолжением для программного обеспечения, управляемого графическими пользовательскими интерфейсами.
#include <iostream>
int main()
{
std::cout << "I love you!" << std::endl;
return 0;
}
5. JavaScript. Язык сценариев, используемый в основном для добавления функциональности веб-браузерам на лету, позволяет создавать сложные веб-страницы.
document.write("I love you!");
6. R. Язык и среда программирования, предназначенные для приложений статистического анализа и интеллектуального анализа данных.
print("I love you!")
7. Arduino. Основанный на языке Wiring и среде разработки на языке Processing, родной язык микроконтроллера Arduino стал основой для огромного количества самодельных и прототипных устройств.
void setup() {
Serial.begin(9600);
Serial.println("I love you!");
}
void loop() {
}
8. Go. Созданный Google, Go имеет встроенную поддержку программ, которым необходимо обмениваться информацией при одновременной работе на разных ядрах или компьютерах.
package main;
import "fmt"
func main()
{
fmt.Println("I love you!")
}
9. Swift. Язык Apple для создания программного обеспечения iOS и macOS. Совместим с кодом C, C++ и Objective-C.
print('I love you!')
10. MATLAB. Язык сценариев для вычислительной среды MATLAB от MathWorks. Предназначен для задач численных вычислений, таких как инженерное или научное моделирование.
disp('I love you!')
11. Ruby. Язык сценариев, разработанный для обеспечения большей поддержки объектов, чем в других подобных языках.
puts "I love you!"
12. Dart. Разработанный Google, Dart может быть скомпилирован для архитектур ARM и x86 для мобильных устройств или перенесен на JavaScript для браузерных приложений. Фреймворк Flutter, созданный на основе Dart, предназначен для создания собственных книг для iOS и Android.
void main() {
print('I love you!');
}
13. SQL. Специализированный язык, предназначенный для запросов к базам данных и управления ими. Существуют расширения для написания общих программ, позволяющих, например, запускать бизнес-логику вместе с базой данных.
CREATE TABLE iloveyou (phrase TEXT);
INSERT INTO iloveyou VALUES ("I love you!");
SELECT COUNT(*) FROM iloveyou;
14. PHP. Язык сценариев, разработанный в первую очередь для поддержки динамических веб-сайтов.
<?php
echo "I love you!";
?>
15. Assembly. Общий термин для обозначения обширного семейства наборов инструкций процессора. Написание кода на ассемблере требует значительных знаний, но позволяет создавать высокоскоростное программное обеспечение, которое может работать непосредственно на железе.
global _main
extern _printf
section .text
_main:
push message
call _printf
add esp, 4
ret
message:
db 'I love you!', 10, 0
16. Scala. Программы, написанные на Scala, могут работать на той же виртуальной машине, что и программы Java.
object Love {
def main(args: Array[String]) = {
println("I love you!")
}
}
17. HTML. Специализированный язык для описания внешнего вида и содержания веб-страниц, часто расширяемый с помощью CSS.
<!DOCTYPE html>
<html>
<head>
<title>Love</title>
</head>
<body>
<p>I love you!</p>
</body>
</html>
18. Kotlin. Как расширение Java код Kotlin может работать на виртуальной машине Java или быть скомпилирован в JavaScript либо собственное Android-приложение.
fun main(args: Array<String>) {
println("I love you!")
}
19. Julia. Язык разработан для статистических и научных вычислений, совместим с устаревшими библиотеками, написанными на Fortran и C.
println("I love you!")
20. Rust. Язык, разработанный для упрощения надежного программирования параллельных систем.
fn main() {
println!("I love you!");
}
21. Shell. Общий термин для обозначения ряда фреймворков, которые позволяют создавать сценарии для командной строки операционной системы.
#!/bin/sh
echo I love you!
22. Processing. Этот язык был создан в Массачусетском технологическом институте, чтобы облегчить художникам, дизайнерам и любителям создание визуализаций. Тесно связанная с ним JavaScript-библиотека под названием p5.js позволяет создавать браузерные приложения.
PFont font;
void setup() {
size(200,200);
font = loadFont("CharterBT-Roman-48.vlw");
}
void draw() {
background(255);
textFont(font,20);
fill(0);
text("I love you!",10,100);
}
23. C#. Объектно-ориентированный язык, созданный Microsoft для разработки программного обеспечения для платформы .NET. Поддерживает множество приложений для Windows и Azure.
using System;
class ILoveYou
{
static void Main()
{
Console.Write("I love you!");
}
}
24. SAS. Язык анализа данных и статистического анализа.
data foo ;
bar="I love" ;
put bar= "you!";
run ;
25. Fortran. Созданный в 1950-х годах, Fortran предназначен для высокопроизводительных научных и инженерных вычислений.
program iloveyou
print *, "I love you!"
end program
26. CUDA. Платформа и набор инструментов от производителя графических чипов NVIDIA, которые позволяют программистам использовать возможности графических процессоров для вычислений общего назначения.
__global__ void cuda_love(){
printf("I love you!\n");
}
int main() {
cuda_love<<<1,1>>>();
return 0;
}
27. Visual Basic. Microsoft создала Visual Basic для быстрой разработки Windows-приложений, но больше не поддерживает его. Потомок Visual Basic .NET, который все еще поддерживается, работает с более современной платформой .NET.
Imports System
Module Love
Sub Main()
Console.WriteLine("I love you!")
Console.ReadLine()
End Sub
End Module
28. Objective-C. Был любимым языком Apple для написания приложений для OS X и iOS до появления Swift.
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSLog(@"I love you!");
}
return 0;
}
29. Delphi. Производная Pascal, используемая для приложений Windows. Принадлежит компании Embarcadero Delphi. Реализации с открытым исходным кодом под Open Pascal существуют для других платформ.
program ILoveYou;
{$APPTYPE CONSOLE}
begin
WriteLn('I love you!');
end.
30. Perl. Когда-то единый язык часто использовался в качестве связующего звена в сложных системах. Теперь же Perl относится к двум тесно связанным, но разным языкам: Perl 5 и обновленному Perl 6.
print('I love you!')
31. Verilog. Язык описания оборудования (определенный стандартом IEEE 1364), который используется при создании и анализе электронных схем. Составляет основу более позднего и расширенного SystemVerilog (IEEE 1800).
module love_you ;
initial begin
$display ("I love you!");
#10 $finish;
end
endmodule
32. VHDL. Язык описания оборудования, используемый при создании и анализе электронных схем.
entity T01_ILoveYou is
end entity;
architecture sim of ILoveYou is
begin
process is
begin
report "I love you!";
wait;
end process;
end architecture;
33. Elixir. Расширение языка программирования Erlang, Elixir предназначен для крупномасштабного программного обеспечения, такого как веб-сайты с высокой посещаемостью, или обработки больших объемов данных.
Erlang/OTP 21.0 [64-bit] [smp:2:2] [...]
Interactive Elixir (1.11.3) - press Ctrl+C to exit
iex(1)> "I " <> "love " <> "you!"
"I love you!"
34. F#. Разработанный Microsoft, F# нацелен на программную среду .NET, наиболее часто встречающуюся в Windows. Он в основном построен на функциях, но также поддерживает объектно-ориентированное программирование.
[<EntryPoint>]
let main argv =
printfn "I love you!"
0
35. Prolog. Этот язык, зародившийся в сообществе разработчиков искусственного интеллекта, в основном используется как инструмент обучения и исследований.
$ swipl
<...banner...>
?- write('I love you!'), nl.
36. Lua. Этот язык сценариев часто используется, чтобы сделать другие приложения программируемыми, особенно в областях анимации и игр.
print("I love you!")
37. Lisp. Созданный в 1950-х годах, Lisp стал широко использоваться исследователями искусственного интеллекта, но в последние годы его популярность уменьшилась. Однако разновидности Lisp, такие как Clojure и Scheme (перечисленные отдельно), могут похвастаться активными сообществами.
CL-USER> (defun love ()
(format t "I love you!~%"))
LOVE
CL-USER> (love)
I love you!
NIL
CL-USER>
38. Ada. Изначально разработанный для Министерства обороны США язык используется для приложений, в которых надежность имеет решающее значение, таких как, например, системы управления аэрокосмическими комплексами.
with Ada.Text_IO;
procedure sayLove is
begin
Ada.Text_IO.put("I love you!"); -- Output some text!
end sayLove;
39. Apache Groovy. Объектно-ориентированный язык программирования, работающий на платформе Java. На Groovy написан известный фреймворк для создания веб-приложений Grails.
public class Love {
public static void main(String args[]) {
System.out.println("I love you!");
}
}
40. Scheme. Изначально задуманный как язык для учебных целей, теперь Scheme представляет собой семейство вариаций Lisp, которые используются в таких приложениях, как, например, App Inventor для Android. Это позволяет быстро разрабатывать мобильные сервисы.
(begin
(display "I love you!")
(newline))
41. Haskell. Язык, построенный на принципах чистого функционального программирования, разработан для приложений, в которых важна надежность.
main :: IO ()
main = putStrLn "I love you!"
42. COBOL. ПО COBOL, созданное в конце 1950-х годов для деловых и финансовых приложений, до сих пор управляет критически важными системами во многих крупных организациях.
PROCEDURE DIVISION.
DISPLAY 'I love you!'.
STOP RUN.
43. Clojure. Диалект Lisp, совместимый с той же виртуальной машиной, которая поддерживает программы Java.
(ns helloworld.core)
(defn -main
"I can say 'I love you!'."
[]
(println "I love you!"))
44. ABAP. ABAP (Advanced Business Application Programming) — это язык программирования для бизнес-сервисов, созданный SAP.
REPORT ILOVEYOU.
WRITE 'I love you!'.
45. D. Созданный как преемник C++, D имеет встроенный ассемблер для использования архитектурно зависимого оборудования.
import std.stdio;
void main()
{
writeln("I love you!");
}
46. Forth. Изначально разработанный для управления радиотелескопами, этот язык программирования до сих пор используется для таких приложений, как загрузчики и прошивки.
: LOVE ( -- ) CR ." I love you!" ;
47. OCaml. Объектно-ориентированный язык с упором на надежность программного обеспечения.
print_string "I love you!\n";;
48. Tcl. Интерпретируемый язык, предназначенный для быстрого создания прототипов и поддержки графического пользовательского интерфейса Tk, используемого в основном системами Unix.
#! /usr/local/bin/wish8.5
button .love -text "I love you!" -command { exit }
pack .love
49. Erlang. Выпуск Erlang как языка с открытым исходным кодом, созданного Ericsson для встраиваемых приложений телефонии, в 1998 году увеличил его популярность среди программистов, разрабатывающих сервисы, которые должны обрабатывать множество задач одновременно.
-module(love).
-export([love_you/0]).
love_you() -> io:fwrite("I love you!\n").
50. Eiffel. Объектно-ориентированный язык, оказавший влияние на несколько других распространенных языков. Важный принцип заключается в том, что как можно больше работы по оптимизации кода следует доверить компилятору, а программист при этом сосредоточится на фундаментальной логике и удобочитаемости кода.
on_paint (paint_dc: WEL_PAINT_DC; invalid_rect: WEL_RECT)
do
paint_dc.draw_centered_text("I love you!", client_rect)
end
51. CoffeeScript. Разработан для упрощения написания кода на JavaScript за счет реализации синтаксических соглашений из других языков.
console.log("I love you!")
52. J. В основном используемый для аналитики и математического программирования, код, написанный на J, часто бывает очень кратким.
#!/bin/jc
echo 'I love you!'
exit ''
53. Racket. Являясь вариацией Lisp, этот язык упрощает создание ваших собственных предметно-ориентированных языков.
> "I love you!"