kamyshev.code
2.17K subscribers
40 photos
565 links
Архитектура, код, софт-скиллы и всё остальное. Вопросы, пожелания, комментарии — @igorkamyshev

https://kamyshev.me
Download Telegram
​​Следующим в "7 языков за 7 недель" идёт Erlang. Это духовный наследник Prolog. Похож синтаксисом, декларативным характером инструкций. Но в целом, выглядит куда понятнее.

Язык разработан для надёжной работы в условиях многих потоков. Эту чувствуется, задачи такого толка решаются просто и элегантно.

Писать на Prolog-подобных языках все же очень непривычно, и потому довольно трудно. Говорят, что Erlang используется в боевых системах, но я рассматриваю его только с точки зрения академического интереса. Слишком необычный язык.

#языки
​​Clojure — диалект Lisp, с непривычки читать его совершенно невозможно. Но язык интересный.

В нем просто и безопасно работать с параллельными вычислениям, он поддерживает отложенные вычислниями.

Самым интересным концептом мне видется "данные как код". Любая программа — это просто список. И это дает много интересных возможностей.

С помощью макросов можно конструировать удобные предметно-ориентированные языки.

#языки
​​Последний язык в "7 языков за 7 недель"Haskell. Единственный чисто (фанатично) функциональный язык в книжке.

Писать на нем очень приятно, он невероятно выразителен. Отсутствие изменяемого состояния упрощает любой код, а чистота функций гарантирует их предсказуемость.

Система типов логичная, удобная. Вывод типов работает хорошо и совсем не мешает выражать намерения в коде.

Но реальные программы должны иметь побочные эффекты. Иначе они ничего полезного не сделают. И тут начинаются сложности. Все побочные эффекты реализованы через монады. Это сложный концепт. Но, допускаю, что благодаря этому решению все остальное а языке кристально однозначно.

#языки
Нужная книга

Дочитал "Семь языков за семь недель" Брюса Тейта. И она хороша. Рассмотренные языки очень разные. Каждый из них несёт свою идею. Освоить их важно и нужно. Это позволит не зацикливаться на привычном способе программирования.

Не думаю, что кому-то придется в реальной жизни столкнуться с Io, Prolog или Erlang, но те способы мышления, которые прививают эти языки точно пригодятся.

#языки
​​Ещё один язык

Попробовал ReasonML. Это такое расширение OCaml, которое компилируется в JavaScript. Язык строго статически типизированный, как я люблю.

Интересно, что код на нем работает быстрее, чем JS за счёт использования более оптимальных структур данных.

В целом, код писать весело, язык приятный. Но его экзотичность, малое количество библиотек и слабый тулинг не дают насладиться в полной мере. Стоит попробовать для расширения кругозора.

Хорошая книга на тему — Exploring ReasonML
and functional programming
.

#языки
Python

Моим первым серьезным языком программирования был Python. Это отличный язык, на нем пишут бэкенды в вебе, весь искусственный интеллект.

Python достаточно простой язык, но в нем, как и в любом языке есть свои лучшие практики, принятые подходы. Эти тонкости можно изучить только через реальный опыт.

SkillFactory запустили Курс по Python для веб-разработки полного цикла, там полно живого опыта — три полноценных проекта под присмотром людей из индустрии. Хорошая возможность освоить язык быстро и без боли.

#языки #партнерский_материал
​​Golang

Я люблю изучать новые языки программирования. Осенью читал "7 языков за 7 недель", а совсем недавно внимательно смотрел на ReasonML и Dart.

Я уверен, что изучение новых языков — большое благо. Так можно перенять какие-то крутые идеи из параллельных миров и использовать их в своей практике.

Последний год я пристально следил за развитием Go. Это максимально непривычный для меня язык — по большей части из-за особенного Go-way. В нем совсем другие лучшие практики. У них там нет исключений! И это осознанный выбор авторов. При этом язык сверх-популярен. Веб, CLI, все можно писать на Go.

OTUS запускает курс "Разработчик Golang", а 23 мая (завтра) в 20.00 МСК пройдет день открытых дверей на этом курсе. Как обычно, доступно предварительное тестирование.

Пишите впечатления от мероприятия, да и в целом мнения о Golang, будет интересно почитать о вашем опыте.

#языки #партнерский_материал
​​Языки: основы

Часто слышу о том, что любой разработчик должен знать С/С++, но сам так и не нашел времени познакомиться с ними. В следующему году я планирую все таки заняться этим.

А OTUS уже совсем скоро (27 июня) запускает курс "Разработчик С++". Это довольно хардкорный курс, и для начала занятий нужно знать базовый синтаксис С++, уметь оценивать сложность алгоритмов, разбираться в основах SQL и многопоточного программирования.

Но это того стоит. На курсе научат асинхронному программированию, работе с шаблонами и обработке больших данных.

Чтобы записаться на курс, нужно пройти вступительное тестирование.

#языки #партнерский_материал
​​Dart

Я часто смотрю на новые языки программирования.

Пару месяцев назад уже пробовал Dart, делал небольшое приложение на AngularDart. Мне понравился фреймворк, но не понравился язык.

Неделю назад снова столкнулся с Dart, на этот раз для мобильной разработки (фреймворк Flutter).

В этот раз Dart мне понравился намного больше. Возможно, это связано с тем, что код исполняется родной виртуальной машиной и уши JS не торчат из каждой щели. Может быть, Flutter просто удачно раскрывает плюсы языка и прячет минусы.

Dart очень объектно-ориентированный язык, в нем достаточно хорошо работает вывод типов, очень выразительный синтаксис.

#языки
Python снова огонь

Всю неделю наблюдаю за коллегами, маcтерами Python. Очередной раз убедился, что в умелых руках этот язык прекрасен. В нем подкупает выразительность, простота концепций и опциональная статическая типизация. Эти три характеристики позволяют писать приложения быстро, надежно и поддерживаемо. И, на мой взгляд, именно этими словами характеризуются хорошие программы.

Самое крутое, что Python абсолютно универсален. Хочется бекенд веб-сервиса? Пожалуйста. Нужен скрипт для сложной автоматизации? Без проблем. Возникла необходимость написать маленький искуственный интеллект и захватить мир? Отличная идея!

16 агуста SkillFactory запускают новый набор курса Full-stack веб-разработчик на Python. Внутри не только основы Python, но и клевые прикладные темы: работа с Linux, Docker-контейнерами, модуль о софт-скиллах.

#языки #партнерский_материал
Большая часть моих приложений написана на TypeScript. Мне тяжело держать в голове структуры данных и сигнатуры функций, поэтому я поручаю эту работу компилятору.

Отличный доклад про развитие TypeScript, его проблемы и возможные решения — Эволюция TypeScript: всё чудесатее м чудесатее.

#языки
​​Rust

Я привык писать на выскоуровневых языках, только однажды писал на C — в 10 классе на олимпиаде по программированию.

Недавно товарищ показал мне туториал по созданию рогалика на Rust. Я попробовал этот язык и оказалось, что это совсем другой опыт. Нужно писать много кода, он невыразительный, сложный. Зато очень быстрый.

С такими языками мы можем эффективнее использовать компьютеры. Не платить цену за лишние абстракции. Уметь писать такой код важно в любой области, а Rust — отличный кандидат, чтобы научиться.

#языки
Я уверен, что мы должны знать как работают инструменты, которыми пользуемся. Например, веб-разработчики должны понимать устройство сети, браузеров, платформы.

В JavaScript очень интересно устроен сборщик мусора. Посмотрите доклад об этом — garbage.collect().

#фронтенд #языки
Изучение разных языков программирования очень полезно. Это позволяет перенимать интересные концепции и лучшие практики разных экосистем и писать лучший код.

Отличный подкаст «Мысли и методы» про разные подходы к исполнению программ — интерпретацию и компиляцию, про системы типов.

#языки
Близится стабильный релиз Deno.

Тематическая статья — Deno: время Node.JS уходит?

Node.js — это очень хорошо. Это простая, производительная и удобная платформа для написания широкого класса приложений. В ней есть некоторые проблемы, но мы можем их решить.

Deno пытается стать лучшей версией Node, но не может. Он не решает текущие проблемы Node.js, но приносит кучу новых. Он похож на редакс — идея может и красивая, но в жизни все будет совсем не так.

Если кто-нибудь верит в Deno, напишите, пожалуйста, почему — @igorkamyshev

#языки #спор
Under JS

Подкастов IT-тематики куча, но последнее время я почти перестал их слушать. Почти во всех обсуждают одни и те же темы. Причем волнами — на этой неделе модно говорить о доступности, на следующей об удаленной работе.

Недавно начал слушать UnderJS Podcast. И он совсем другой. В нем разбирают более глубокие темы, обсуждают разное и интересное. Недавно были выпуски про Haskell, про Dart, рассуждение на тему стейт-менеджеров. Если вам близок JS-мир, послушайте этот подкаст.

#языки #фронтенд
Типизация

Я большой адепт ограничений. Люблю, когда инструмент заставляет меня писать лучший код. Строгая статическая типизация — это как раз такие ограничения. Да, нужно больше думать, тратить больше времени. Зато результат получается лучше.

Но, к сожалению, в JavaScript-мире я не могу получить желаемого. Самый популярный инструмент типизации TypeScript дает мне статическую слабую типизацию. Плюс в нем довольно плохо работает вывод типов, очень мягкие правила проверки типов по умолчанию. Этого мало. Поэтому, я с интересом смотрю на альтернативные решения. Elm, Scala.js, PureScript — это все очень весело, но абсолютно бессмысленно. Слишком непопулярные решения, которые требуют менять кодовую базу.

Недавно наткнулся на Hegel.js — это статический типизатор, которые переваривает аннотации типов от TypeScript, но лишен его проблем. Если этот проект дойдет до продакшн-реди состояния, я обязательно возьму его в пару проектов. Доклад автора на HolyJS — Как и зачем я пишу свой статический типизатор.

Что такое сильная/слабая и статическая/динамическая типизация рассказывал тут.

#языки
Я уже тысячу раз говорил, что считаю жутко важным знать много языков программирования: просто для кругозора. Например, можно почитать крутую книгу «Семь языков за семь недель».

А если хочется быстро вкатиться в какой-то другой язык за ограниченное время, то вместо чтения документации можно обратиться к Learn X in Y Minutes: Scenic Programming Language Tours — это простой сборник шпаргалок по разным языкам.

#языки
Из доклада Зачем OCaml на фронтенде я не понял, зачем нужен OCaml на фронтенде 🤷‍♂️ но доклад очень интересный.

Мне кажется, это отдельная ветка развития инженера — расширение технического кругозора. Например, фронтендерам стоит почитать/послушать про rescript просто для общего развития, вдруг что.

#языки #фронтенд #фп