Как-то заглянув на GitHub, обнаружил Koka – язык функционального программирования со статической типизацией. Koka разрабатывается с 2012 года Daan Leijen в Microsoft Research, USA. Его исходники выкладываются на GitHub под лицензией Apache 2.0. Как признаются его авторы, он ещё не готов для промышленного применения: у него нет библиотек, менеджера пакетов и полной поддержки в средах разработки. При этом сам язык достаточно стабилен, а компилятор полностью разработан. Отдельными моментами язык напоминает Rust, Haskell и Scala. Сам же по себе он интересен контролем побочных эффектов. Это его основная фишка. Приглашаю познакомиться с Koka и обсудить его свойства.
fun main(): console ()
println("Hello, World!")
Сначала пробежимся по свойствам языка, а затем рассмотрим один небольшой пример.
Выясним, как вычисляются рейтинги языков программирования, какие языки программирования наиболее популярны, и что нам с этой информацией делать.
В декабре 2021 года Python остается одним из самых популярных языков программирования. Об этом мы узнаем из рейтингов IEEE Spectrum, TIOBE, PYPL. Однако рейтинги GitHub Octoverse и Stack Overflow Annual Developer Survey сообщают нам, что Python на 2-м месте, а GitHut, что лишь на 3-м. А самым популярным является JavaScript. Дело в том, что у разных рейтингов разные задачи и методики подсчета. А значит пора разобраться, как устроены эти рейтинги и для чего они нужны.
Место | TIOBE | IEEE Spec. | PYPL | GitHub Oc. | Stack Overf. | GitHut |
---|---|---|---|---|---|---|
1 | Python | Python | Python | JavaScript | JavaScript | JavaScript |
2 | C | Java | Java | Python | HTML / CSS | Java |
3 | Java | C | JavaScript | Java | Python | Python |
4 | C++ | C++ | C# | TypeScript | SQL | CSS |
5 | C# | JavaScript | C / C++ | C# | Java | PHP |
6 | Visual Basic (.Net) | C# | PHP | PHP | Node.js | Ruby |
7 | JavaScript | R | R | C++ | TypeScript | C++ |
8 | Assembly Language | Go | Swift | Swift | C# | C |
9 | SQL | HTML | Objective-C | C | Bash / Shell | Shell |
10 | Swift | Swift | Matlab | Ruby | C++ | C# |
Без лишних слов маленький пример различия результов одного и того же кода на JavaScript и TypeScript.
const a = [1, 2, 3, 4, 5];
var s = 0;
for (var v in a) {
s += v;
}
console.log(s);
JavaScript выводит (WTF? Неожиданно? Для специалиста JavaScript нет…):
001234
TypeScript даже не компилируется (и это хорошо!):
sample.ts(5,3): error TS2322: Type 'string' is not assignable to type 'number'.