← All posts tagged программирование

Всякую сисадминскую автоматизацию для линуксов я пишу на шелле (с башизмами). Конечно, это мазохизм, но есть некоторые очень соблазнительные преимущества:

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

Но есть большая ложка дегтя — собственно программировать на шелле очень трудно. Если появляется нужда в нетривиальных структурах данных и нетривиальных алгоритмах их обработки — то наступает полный и беспросветный мрак и отчаяние.

Поэтому вопрос — чем можно в 21-ом веке заменить шелл, чтоб преимуществ не сильно растерять, но и при этом иметь возможность нормально программировать? Готов рассмотреть ЯП с компиляторами со статической линковкой. Поделитесь опытом.

Посмотрел на современные статически-типизированные языки. Как-то получается, что они разделились на три категории

1. Низкоуровневые с нативным компилятором (go, rust, d)
2. Высокоуровневые под jvm/.net (boo, kotlin, scala)
3. Заумно-задротские с нативным компилятором (haskell, *ML)

Есть ли примеры, которые не попадают в эти три категории?

Что сейчас рулит из последних жаваскрипт-фреймворков? angular2, reactjs, aurelia? Во что стоит инвестировать свои мозги?

Я так смотрю что в мире ЖС пока ты осваиваешь один фреймворк он уже успевает стать deprecated, и на юзающих его начинают смотреть как на динозавров.

Перевел один из старых больших проектов на python3. Сложности возникли с

1. принт со скобками
2. .encode('hex') для строк
3. не везде были правильно прописанные относительные импорты.

Почти не возникло проблем с юникодными и байтовыми строками.

После недолго греппинга вышеуказанных проблем прогнал тесты — и все вроде взлетело. Легче чем я думал.

Интересно, что после окончательного перехода с Emacs на PyCharm я стал гораздо меньше комплексовать по поводу отсутствия статической типизации в питоне. PyCharm очень качественно отлавливает ошибки, я порой даже теряюсь сразу понять по какому алгоритму он некоторые из них находит. Конечно, до GHC чарму еще далеко, но все же результат ощутим.

Помогите, пожалуйста, составить список популярных высокоуровневых статически-типизированных языков с развитой экосистемой. Пока выходит такое:

1. Java/Scala
2. ML/OCAML
3. C#/F#
4. Haskell
5? Swift (увидел в рейтингах но хз что это такое вообще)
6? Go (не уверен в том, что он настолько высокоуровневый как остальные в этом списке)

Дополните, плз.

Интересная ситуация на проекте — понадобилась нам заинтегрироваться с Moodle. На пхп я никогда не программировал (и никто из ребят на проекте тоже), документация у мудла слабенькая, ну я понимая что провожусь с этим делом слишком долго, предлагаю начальнику нанять какого-то пхпшника, мол у него и рейт пониже будет, и сделает быстрее. Ответ меня поразил — "I don't trust PHP developers".

Вот мне интересно, начальник дурак или все правильно делает?