summaryrefslogtreecommitdiff
path: root/content/digarden/20210409071539-языки_программирования.org
blob: d61a1bcc54887bff6ea4c960bfce1af82e25c089 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
:PROPERTIES:
:ID:       77d32578-cf7b-4947-8351-ca2fe19bbf6f
:END:
#+title: Языки программирования
* Языки программирования
Языки программирования имеют [[id:da3c3733-e508-4a63-a4e9-e8807c73c6f0][Реализации языков программирования]]

http://progopedia.ru/

- [[id:a003951c-d5a6-4390-aeb0-ed1d4d5e8c00][Элементы языков программирования]]
- [[https://hyperpolyglot.org][Сравнение языков программирования <hyperpolyglot>]] 
- [[https://web.archive.org/web/20200426084021/https://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wrong.html][История языков программирования]]
  
Личный выбор языков (в порядке предпочтения):
- Python Элементы динамического программирования как в лиспе. Упор на
  простоту понимания. Простое устройство интерпритатора. Выбрал бы Ruby,
  но он не так популярен.
- Scheme (Guile или Racket) Функциональное программирование, основанное
  на лямбда исчислении. Интерпритатор ещё проще чем у мейнстримных
  интерпритируемых языков.
- C
  Язык операционной системы GNU и множества утилит. Простой язык с множеством стандартов.
- D
  Язык между C(++) и Java/C#. Компилируемый, но имеет GC (почти как ~GO~), по функционалу ближе к ~C++~
- Java
  Сложный безопасный язык. Полуинтерпритируемый, полукомпилируемый.
- Scala
  Сложный функциональный ооп jvm язык. Хорош тем, что на нём есть работа
  и то что он основан на математической функциональной модели.
- Oberon
  Минималистичный язык в стиле Си, но безопасный. Вдохновил Java и Go.
- SML
  Функциональное программирование с нормальным выводом типов.
- Erlang
  Функциональный динамически типизированный язык, расчитанный под
  concurrency (параллельность/многопоточность). Имеет странный синтаксис, используется на работах.
- Ruby Динамически-типизируемый язык с заимствованиями из Lisp и
  Smalltalk. Самый хороший из мейнстримовых языков хотя качество
  библиотек и количество работ на этом языке оставляют желать лучшего.

Одна или считай-что-одна реализация:
- [[id:cf9a0dd5-561b-4330-bdfd-07689db2dc44][Java]] (openjdk, gcc is dead)
- [[id:7f86ced4-b418-4cd4-a14e-d7e4f1f343de][Haskell]] (ghc)
- [[id:2f0a8624-cbf4-4b9a-a8dc-5ed64c8edc69][Idris]]
- [[id:ab68624c-e88f-4fe4-94e9-d5de53f97358][Ocaml]]
- [[id:99d098f3-1277-4752-837a-5987324385c4][C#]]
- [[id:196cd766-023a-40e6-9fa1-3d0c0036a290][Go]]
- [[id:a80f5c9e-2dc7-4c91-b692-a9be3176dc1e][Ada]]
- [[id:3d11fde0-4c69-40e2-b3f5-6b1d3063b1f9][Perl]]
- [[id:00243b7a-2841-4021-a1be-597a50f6074e][Clojure]] / [[id:21a9de98-8fb1-42b0-b495-750ec33320e0][Scala]]
- [[id:2f0a8624-cbf4-4b9a-a8dc-5ed64c8edc69][Idris]]
- [[id:be4c0663-065f-4564-a72d-cfd4fbd274a4][Erlang]]  
- [[id:46bd6e4d-43ea-4f31-aa2d-155b4499b6fb][Zig]]
  
Много реализаций, но по факту культура использования одной:
- [[id:6e29e344-2375-49a7-8ca5-234d24a57bc5][PHP]]
- [[id:e3725676-12e5-4e8d-a3cc-cc2c29fdee7a][Python]]
- [[id:ca2c77bb-1921-4e86-9fa3-cc5db9ba03a1][Ruby]]
- [[id:cde2b545-498f-4a38-bd07-4c8d9f81c94c][Dlang]]  

Языки с множеством реализаций
- [[id:40c44577-6cd7-4eac-aac7-288a0537b7e9][C]] / [[id:c3590de1-c364-46c9-a840-7fbc93d1d8e0][C++]] / [[id:fcaa663b-dd38-4d07-a787-947edb13f6e3][ObjC]]
- [[id:eaa22630-cc22-4682-8cbf-e20ee4d5c54d][Javascript]]
- [[id:f9734fab-a506-4993-a2a4-7e5eef057706][Scheme]]
- [[id:eba2c232-f2b2-44b1-840d-bf0fcfb36db5][Common Lisp]]
- [[id:195e9936-de22-40a6-9a60-09a6fee6ae19][SML]]
- [[id:60d78ebc-22a7-4c73-bd79-15e6c476e2e3][Oberon]]
- [[id:5d5b35cb-a220-4812-8cb4-a0c92f7108f6][Modula]]
- [[id:5446e80e-b93c-46aa-b774-d1f36e6b2e46][Pascal]]
- [[id:92d82cbc-29e7-41b0-8ced-e504811255d3][tcl]]

Подробнее про количество реализаций:
https://en.wikipedia.org/wiki/List_of_compilers

** *Тир-лист*:
*** /Ультрамегасупердуперхарош/
ATS, Agda, Coq
*** /Ахуителен/
Scheme, Idris, Forth
*** /Мегахарош/
Common Lisp, Zig
*** /Харош/
Prolog, Scala, Rust, Haskell
*** /Чел харош/
Standard ML, Ocaml, Erlang
*** /Норм/
Modula-2, Pascal, Ada, Clojure, Oberon, Smalltalk, TCL, Dlang
*** /Неплох/
Ruby, D, Nim, C#, Javascript
*** /Плох/
Java, Python
*** /Мегаплох/
PHP, Simula, Algol
*** /Словил кринж/
C
*** /Кринжанул/
Go, Logo
*** /Супермегаультранасрал/
C++, Fortran, Язык ассемблера
*** /Че ты высрал/
Lua, APL, Unlambda, Brainfuck
*** /Пошел нахуй/
Perl, Shell
*** /Атсасииииии/
1C, Visual Basic
  
*Документация:*
- Оффлайн:
  -- Python: [[https://en.wikipedia.org/wiki/Pydoc][Pydoc]]
  -- Ruby: Ri
  -- Java: Javadoc
  -- Perl: Perldoc

*Сравнение языков*:
- Python и PHP не собираются под JVM, когда у Ruby есть поддерживаемый JRuby.
- Scala, Ocaml, Common Lisp сохраняют ООП элементы при этом являясь функциональными языками
- PHP быстрее всего из "интерпретируемых" языков
- C#/Java быстрее интерпретируемых языков, но медленнее чем компилируемые (C, C++, Rust)
- Компилируемые языки со сборкой мусора могут быть медленнее "интерпретируемых" Java/C#

** Языки программирования по типу
*** Моделирование, тестирование
- ADA Spark
- [[https://dezyne.org/dezyne/manual/dezyne/html_node/Introduction.html][Dezyne]]  

[[https://en.wikipedia.org/wiki/List_of_programming_languages_by_type][Список языков программирования по типу]]  

** Родословная языков
- [[http://rigaux.org/language-study/diagram-light.png][Простая]]
- [[http://rigaux.org/language-study/diagram.png][Сложная]]

- [[http://rigaux.org/language-study/syntax-across-languages/][Синтаксис многих языков]]