summaryrefslogtreecommitdiff
path: root/content/digarden/pages/20210409071539-языки_программирования.org
diff options
context:
space:
mode:
Diffstat (limited to 'content/digarden/pages/20210409071539-языки_программирования.org')
-rw-r--r--content/digarden/pages/20210409071539-языки_программирования.org130
1 files changed, 130 insertions, 0 deletions
diff --git a/content/digarden/pages/20210409071539-языки_программирования.org b/content/digarden/pages/20210409071539-языки_программирования.org
new file mode 100644
index 0000000..6df7a21
--- /dev/null
+++ b/content/digarden/pages/20210409071539-языки_программирования.org
@@ -0,0 +1,130 @@
+: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/][Синтаксис многих языков]] \ No newline at end of file