3238

Советы тем, кто реально хочет стать программистом6

1. Перед тем, как отвалить крупную сумму за курсы - попробуйте почитать книги, это сильно дешевле. Например, по Java есть замечательная "Философия Java", хоть и немного устаревшая. Ключевые концепции языка в ней изложены просто великолепно.


2. Не верьте тем, кто обещает быстрый прогресс и гарантированное трудоустройство - это верный признак инфоцыган (за очень редкими исключениями). В той же Java сейчас требуется гигантский объем информации для успешного трудоустройства - ну как минимум кроме синтаксиса еще Spring, базы данных, Maven/Gradle, автотесты. За три месяца это выучить невозможно. За год -  вполне.


3. Избегайте курсов для "умственно отсталых". Тут нужно понимать: можно немного сгладить кривую сложности в начале - подбирать всякие метафоры с паровозиками при объяснении логических операторов, делать красиво анимированные схемы etc. Это отличное завлекалово, когда после вывода трех строк на экран и примитивной программки типа "четное ли число или нет", кажется, что это просто и вообще непонятно, из-за чего сыр-бор. Но потом вам попадется какой-нибудь принцип подстановки Лисков, который вообще-то одна из базовых концепций ООП - и его уже с помощью метафор так просто не объяснить. Или вот вы читаете про особенности индексации таблиц в БД, например, и не понимаете ни слова. Некоторые концепции сложные сами по себе. Это как выпустить учебник "Квантовая механика для дошкольников" (нет, я не уравниваю в сложности квантовую механику и программирование). 


4. Вообще старайтесь не забывать про теорию. Немного алгоритмов (хотя бы простейшие сортировки типа пузырьковой и вставкой, бинарный поиск, оценка сложности). Немного структур данных - массивы, связанные списки, бинарные деревья, мапы. Немного спецификаций типа REST.


5. Старайтесь учиться сами столько, сколько возможно. Гуглите книги, статьи на Хабре, видео в YouTube, документацию. Вообще скилл искать документацию самому очень выручает.


6. Обязательно выкроите время на git. Просто поверьте - он будет нужен.


7. Если не знаете английский - учите. В контексте IT та информация, что есть в рунете - это жалкий, недостойный упоминания огрызок по сравнению с тем, что можно найти на английском.


8. Проявляйте инициативу, не ждите, будьте готовы работать за копейки - главное опыт. Свою первую работу я нашел просто - вбил в поисковике "Java Хабаровск работа", открыл первый попавшийся сайт (галера для госа), скопировал телефон, написал в WhatsApp и напросился на собес. Думаете, меня взяли сразу? Нет, меня попросили написать реализацию стека. Я попробовал родить код на доске на массивах, и спустя полчаса меня милостиво отпустили - доучиваться. В итоге я к ним попал через три месяца. Зп на испытательном - 25к, 35к после испытательного.


9. Если уверены в своих силах и чувствуете, что готовы искать работу - старайтесь абсолютно всеми возможными способами попасть на стажировку, такую, где вас условно кинут на амбразуры, где ваш первый pull-request разнесут в такие щепки, что вы потом будете четыре дня плакать на больничном. Именно в таких местах качается реальный скилл программирования. Рост в начале идет только при условии разницы в опыте между участниками, если все на одной ступени - это стагнация.


10. Многие новички не могут родить pet проект, это нормально. Просите тестовое. Поскольку до мидла вам еще как до луны, цель вашего тестового - просто проверка на то, как вы будете писать код (спагетти, названия переменных транслитом,  методы по 600 строк и другие признаки идиота сразу отпугнут) и знаете ли вы базовые концепции языка (если в языке иммутабельные строки и вы в цикле их конкатенируете - тревожный колокольчик).


11. Самое главное - подумайте, готовы ли вы этим заниматься всю жизнь даже за большие деньги? Готовы ли вы регулярно говорить "я не знаю, покажи мне, как надо"? Готовы ли вы защемить свое ЧСВ и признать, что всегда и в любой момент времени рядом с вами может оказаться кто-то, кто знает больше вас - и вам придется у него учиться, даже если вы principal с 15-летним опытом? Готовы ли вы в свободное время висеть на литкоде по два-три часа в день, чтобы не уходить в крудо/формошлепство? Потому что нет большего вреда для проекта, чем закостенелый дебил, который тащит в работу архитектурные решения, популярные эдак лет 15 назад. Или придурок, который выгружает всю таблицу БД в оперативку, чтобы отсортировать ее там и вытащить одну запись, потому что он так делал раньше и это работало. Или идиот, который считает, что автотесты - это трата времени, мол, есть же тестировщики.


Потому что если не готовы - пожалуйста, не идите в программисты.

Лига программистов

2.3K постов12K подписчиков

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

Вы смотрите срез комментариев. Показать все
0
Автор поста оценил этот комментарий
Что из языков сейчас востребовано? И пригодится в ближайшие годы?
раскрыть ветку (61)
24
DELETED
Автор поста оценил этот комментарий

Смотря куда и чего хочется. В enterprise и бэк- Java, можно еще C# или плюсы, но плюсы - это хардкор. Если фронт - однозначно React (или Angular для Европы, насчет Штатов не знаю). Если devops/нейронки - то только python. Если быстро - то php. Если под яблоки - то Swift. Под android - все та же Java + Kotlin/Go (лучше сразу Go). Короче, тут рецепта нет, надо смотреть, что больше нравится - тебе с этим годами работать, не стоит полагаться на советы ноунейма с Пикабу. 

раскрыть ветку (47)
15
Автор поста оценил этот комментарий

Спасибо... Сильно помог 🙂

Иллюстрация к комментарию
раскрыть ветку (12)
23
DELETED
Автор поста оценил этот комментарий

Дружище, это все равно, что спросить в интернете "на кого мне идти учиться" после 11-го класса - даже если искренне что-то посоветуют крутое, не факт, что тебе зайдет)

раскрыть ветку (11)
0
Автор поста оценил этот комментарий

Да мне то не сильно надо, сын интересуется.


Я в своё время учил 80ые: бейсик, фокал, (в школе), 90ые: фортран, паскаль (в институте), потом уже сам ковырялся в дельфи. И разное по мелочи, например 1С, не считаю его прям языком. В 2000ых уже по мере надобности что-то писал под С# и С++. Я к тому, что в разные периоды востребованы разные языки, что-то более актуально, что-то совсем умирает. Вот сыну интересно, что может быть востребовано через 2-3 года, куда направить энергию?

раскрыть ветку (10)
8
Автор поста оценил этот комментарий

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


Вдобавок, я бы предложил попробовать сориентироваться не по языку программирования, а по сфере. Мир IT клином на программировании не сошёлся, есть администрирование-devops-sre, автоматизация, управление. Поэтому я предлагаю посмотреть на так называемые "дорожные карты", или "стек технологий". Как пример - roadmap.sh. Мало знать конкретный язык программирования, в нагрузку идёт ещё уйма дополнительных навыков, сумма которых и выражает ценность специалиста.

16
DELETED
Автор поста оценил этот комментарий

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

раскрыть ветку (3)
1
Автор поста оценил этот комментарий
С чего начать пайтон? Что читать?

Вообще мозги уже не те, с которыми ковырял когда-то с++, целил в тестеры-мануальщики. Есть вообще смысл?
раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Вот с этого. А как надоест - делать проект и учиться

https://www.youtube.com/watch?v=KdZ4HF1SrFs&list=PLRDzFC...

Предпросмотр
YouTube1:20:50
0
Автор поста оценил этот комментарий
Хорошо, пусть сам думает и выбирает. Скину всë, что тут посоветовали
2
Автор поста оценил этот комментарий
Вам же привели пример с школьником. Вот у меня например сын 11 класс закончил на какой факультет его отправить, что бы в будущем у него все было хорошо? Каждый язык индивидуальный и нужен даже определенный склад ума и характера, (сейчас без обид, если кто примет близко к сердцу). Если ему нравится общаться с пользователями или он активный то может пойти в бизнес языки или фронт энд , если любит душнить(без обид) может плюса какие нибуд и вообще асемблер. Если хочет , чтоб сайты там были и никто не трогал php и другие. Вообще куча всего разного есть выбирай не хочу. Может он игры хочет писать, там тоже несколько языков в зависимости от движка. Так что врятли вам кто-то сейчас скажет, вот изучай phyton и 109% будет везде в шоколаде, так как через 5 лет придумают ещё какой нибудь язык и привет переучиваться придется.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Прикладная математика.

1
Автор поста оценил этот комментарий

js - это как современный бейсик считай, а питон - как паскаль. на обоих языках есть как любительские, так и профессиональные проекты.


на си уже почти не пишут, вместо него или с++ где нужна скорость выполнения, или java где нужна скорость разработки. любительских мелких проектов на этих языках почти нет, только профессиональные.

а, хотя нет, под андроид вроде на java писали, а там есть и любительская ниша.


ещё для интернет-страничек есть php, который изначально был любительский, а теперь стал профессиональный и совсем другой, но всё же совместим с тем, любительским. :)

раскрыть ветку (2)
1
Clatto Verata Nikto
Автор поста оценил этот комментарий
на си уже почти не пишут
Эмбеддед. Встраиваемые системы. Тоже востребовано. Кто любит поближе к железу. Но тут надо неплохим электронщиком быть, а это увлечение как правило приходит первым, а уж потом программирование.
0
Автор поста оценил этот комментарий
Спасибо. Коротко о главном, так сказать
3
Автор поста оценил этот комментарий

А что такого страшного в плюсах? Я только начал учиться, но так как мечу в ИБ, то тут только они практически. Все говорят что это сложно, а вот что конкретно, никто(или поясняют, но с непонятной терминологией). Сейчас на той стадии когда могу не скопипастить, а осмысленно за каждый символ написать простенький Hello World, т.е. типы данных, функции, директивы препроцессора, бинарные операторы, пространства имён, заголовочные файлы и т.д.(по верхам конечно), но так пока и не понял чего должен пугаться. Можно пояснение, пожалуйста? А то я действительно не понимаю, может упускаю что-то

раскрыть ветку (20)
6
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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

2
Автор поста оценил этот комментарий

Лишь чуточку поинтов:

* В языке (в стандарте) заложено много UB. То есть можно написать некорректный/не переносимый код и не узнать об этом.

* Широко используется прямой доступ к памяти через указатели, что грозит падениями, ошибками неизвестно где и неизвестно при каких условиях. Можно писать "современно", с умными указателями и прочим, но учебные программы и большинство боевых проектов почему-то об этом не в курсе.

* Вывод типов. Правила template, правила auto, правила decltype и правила decltype(auto).

* Разрешение перегрузок и шаблоны. Построенный на этом SFINAE.

* Разные формы инициализации и std::initializer_list, перехватывающий все подряд с фигурными скобками, что особенно болит в шаблонах.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Да у человека отличная память - просто пока вам надо условно 1% от всего языка вы можете это запомнить, когда вам надо 20% языка - начинаются ууупппссс.

2
Автор поста оценил этот комментарий

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

5
DELETED
Автор поста оценил этот комментарий

Указатели позволяют влегкую создать утечку памяти, которую потом хрен найдешь. Поэтому в enterprise плюсов особо нет - защита от дурака околонулевая. Ну, насколько я знаю.

раскрыть ветку (1)
6
Автор поста оценил этот комментарий

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

0
Автор поста оценил этот комментарий

> А то я действительно не понимаю, может упускаю что-то

как работает строчка:
.....
int i = ....
std::cout << i << std::endl;
...

раскрыть ветку (12)
2
Автор поста оценил этот комментарий

Чую подлетающие минусы, но: создаётся ячейка памяти целочисленного типа весом 4 байта с идентификатором "i" и с помощью копирующего присвоения ей даётся некое значение. Std это имя пространства имён стандартной библиотеки С++ которое подключается с помощью директивы препроцессора #include <iostream>, было создано для избежания конфликтов имён, подробности не помню. :: название не помню, но оно отвечает за регулировку областей видимости, в данном случае указывает что надо выдернуть функцию cout из пространства std. << изначально бинарный оператор сдвигающий биты на несколько позиций, но cout его изворачивает и превращает в оператор ввода, по крайней мере так мне объяснили. Вывод i в консоль, хз что тут даже сказать. endl делает две вещи, начинает новую строку, и заставляет cout выплюнуть всё что он съел, пока только в теории представляю его полезность, на практике пока не сталкивался с его необходимостью. ; заканчивает стейтмент и говорит компилятору что этот кусок кода закончен. Наверное всё, больше ничего пока не знаю, плюсы учу примерно 2 недели

раскрыть ветку (11)
2
DELETED
Автор поста оценил этот комментарий
<< изначально бинарный оператор сдвигающий биты на несколько позиций, но cout его изворачивает и превращает в оператор ввода, по крайней мере так мне объяснили

Это называется "перегрузка оператора" ("operator overloading")

1
Автор поста оценил этот комментарий

А зачем минусы? Откуда у вас эта ассоциация с грубостью на ответ джуниора?
У вас отличная память и есть некоторое понимание.

Теперь (чтобы ответить на ваш вопрос) я хочу узнать про ваше понимание (считайте, что я кинул факел в ваш колодец знаний и смотрю насколько он глубок).
Самая интересная часть вопроса: как "<<" как он выводит что-то в консоль?

ПС
Если дадите примерно столь же подробный - не важно где вы остановитесь ответ про операто "<<" - смогу вам ответить.

раскрыть ветку (8)
0
Автор поста оценил этот комментарий

На счёт него хз вообще. Почти всё что я про него знаю написано выше. Если то что сказал человек выше правильно, а судя по гуглу так и есть, то это часть перегрузки операторов.

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

Ввод в эту тему начинается с 130 урока, я сейчас на 61, т.е. только 2-3 недели там окажусь в нынешнем темпе. А про агрессию на ответ джуна понятия не имею, но на пикабу обычно хуесосят за малейшее незнание. Мне вопрос про плюсы уже минусанули, что уж говорить

раскрыть ветку (7)
1
Автор поста оценил этот комментарий

Понятно (вообще я не перегрузку операторов имел в виду, а что происходит "под капотом" языка).
Тогда придётся давать ответ "в вакууме".

Надо реально до фига всего знать (вы знаете - ну не заню на вскидку 1% языка, а то и меньше; вам же знать надо не только сам стандарт, но и типовые use-case его применения).

Это значит либо очень много помнить, либо много помнить, плюс глубоко понимать "возможные опасные места".
Ну вот тут проблема - либо отличнейшая память (нечеловеческая?), либо знание в глубину "микроархитектуры ЭВМ и компиляторов" (а чтобы знать в глубину "микроархитектуру ЭВМ и компиляторы" - надо иметь специфический аналитический склад ума).
Это в целом.

0. Вам ниже уже написали основные большие куски - что надо знать. Поверьте там МНОГО всего.

Плюс по use-case.
1. В дебагере надо часто сидеть - в С++ просто куча классов ошибок (в основном из-за ручного управления памятью) которых нет в других языках.
- шаблоны - очень не user-friendly к отладке
- ошибки компиляции (из-за шаблонов) - ну то есть это отдельный скилл по листингу ошибки на 1.5 экрана угадать что не так.


2. Куча версий стандарта (С++11, 14, 17, 20, скоро 23).
Это значит что даже хороший программист писал код по-заному в разные коды.

3. Плохие программисты.
На С++ проще наговнокодить чем на других языках. Потому, что кишки наружу. А потом смотришь, у тебя лист - листов - листов - листов, и копайся в потрохаха как там что сохранено.

4. Кишки наружу - отдельная проблема (ну то есть я на С++2014 последний раз писал, вроде постоянно прогресс идёт, но проблема остаётся). Что-то можно сделать разыми способами и почти всегда у разных способов разные трэйд-офф "надёжности \ скорости \ краткости кода".


5. трэйд-офф "надёжность  \ скорость \ краткость кода" - часто на практике выкручен в сторону "нужно чтобы работало быстро". Это значит два других параметра страдают.


6. (это теоретический пункт - на практике не встречал) - сложность со стандартом и реализациями в компиляторах, особенно усложняет тем, что стандарты написаны на особом языке "язык стандарта С++".
Реализация в компиляторе может не соответствовать стандарту (например безопасно приводить тип через union). Вы это в своём проекте используете, а потом раз - и делать такой фокус больше нельзя. Примеры есть.

раскрыть ветку (6)
0
Автор поста оценил этот комментарий

Понимаю, спасибо за потраченное время, даже неожиданно что столько людей информацию накидали, даже придётся создавать отдельную папку для сохранения комментов

0
Автор поста оценил этот комментарий

А если примерно, сколько процентов языка должен знать джун? Именно самый необходимый минимум для начала работы который требуют в среднем по рынку

раскрыть ветку (4)
1
Автор поста оценил этот комментарий

Update: для лучшего понимания C++ я бы вам через годик посоветовал бы пройти курс по Rust.
===================================

Это бессмысленный вопрос.

Если вы хотите устроитсья на вакансию "писать код", то при того же качества ответах:
- как трэйни - допройти курс будет достаточно (возможно с этими занниями - вы очень обстоятельно отвечаете - вас и как джуна воьзмут).
- как джун чтобы 100% взяли (т.е. ЗП на которую можно жить нормально) - добавить DB, QT (или другой "фреймворк"), "обзор git", "обзор микросервисов".

А дальше - вопрос специализации (сценарий работы вашей конторы).

ПС
У меня на прошлой работе (мы компилятор писали) был коллега, который "знал стандарт С++". Это была его рабочая обязанность - консультировать писателей компилятора по стандарту в сложных ситуациях.
Ну то есть стандарт реально "необозрим".

раскрыть ветку (3)
0
Автор поста оценил этот комментарий

Записал, спасибо. Хотя именно кодить я полезу только в крайнем случае, кибербезопасность как-то повеселее звучит, но учитывая что там нужен фундамент, возможно таки придётся устроиться дабы понять кухню изнутри. Короче видно будет месяца через 2-4, если на тот момент совет понадобится, могу вам же написать?

раскрыть ветку (2)
1
Автор поста оценил этот комментарий

Ячейка памяти весом 4 байты

Это не верно. Скок что весит, очень сильно зависит от платформы и имплементации.

Стандарт обычно гарантирует только at least.

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

По своему опыту, часто вижу циклы по массивам вместо хэш мапки, лишние копирования, разъыменовывания без проверки, use after move, висящие ссылки, как то видел использование мапки в многопоточном коде без синхронизации, const cast на константную память, и таких мелочей много набегает, просто в плюсах(относительно других популярных языков) куча возможностей, свобода делать что хочешь, но люди упорно хотят себе что-нибудь прострелить)

2
Автор поста оценил этот комментарий

Под андроид лучше сразу Go... Прошу прощения за резкость, но это неверно. Kotlin #1 citizen под андроид. И React с ангуляром - всё-таки не языки. Javascript/Typescript.

3
Автор поста оценил этот комментарий

Под android - все та же Java + Kotlin/Go (лучше сразу Go).

1) как на этом Go писать под андроид UI?

2) куда потом идти с таким опытом?

раскрыть ветку (6)
DELETED
Автор поста оценил этот комментарий

Адынь) Go компилится под разные архитектуры, можно подцепить ведроидный Ui и на вендовой машине собрать под armv5, к примеру.

Дыва) Туда, где пилят на Golang под ведроид. (Наверное, надо посмотреть, какие есть предложения по работе.)

раскрыть ветку (5)
0
Автор поста оценил этот комментарий

Но нативный ведроидный UI имеет API на Java

раскрыть ветку (4)
0
DELETED
Автор поста оценил этот комментарий

А, вот. Если есть либы и тулчейны, то компилятор отработает как надо. А Java в ведроиде - байткод.

https://ru.stackoverflow.com/questions/1002657/Разработка-на-golang-под-android

раскрыть ветку (2)
2
Автор поста оценил этот комментарий

The Go Mobile project is experimental. Use this at your own risk. While we are working hard to improve it, neither Google nor the Go team can provide end-user support.

Ну и, во-первых, советовать такое новичкам — медвежья услуга, а во-вторых, это в первую очередь просто альтернатива C++. И область применения у такого кода соответствующая.

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Правильно, новички пусть на питоне циклы пишут. А то понапокупают китайской DIY арм-щины да научатся патчи  с дровами писать!

DELETED
Автор поста оценил этот комментарий

Ждите оргазма......

1
Автор поста оценил этот комментарий

Вроде как Kotlin и Scala набирают популярность больше, чем классическая Java. Golang вполне вариант для бэка, хотя там тоже есть свои приколы. Про php только недавно писали, что там есть разрыв: говнокодеры (иногда фулстекеры) и несколько компаний высокого уровня, то там реально надо шарить, причём ещё в SQL, хайлоаде и прочих приколах, в общем перспективы так себе. python только для основы или дата-сатанистов разве что.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Scala
Точно нет, рынок скалистов очень скуден. Очень высокий порог входа, не особо понятны бенефиты.

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

Но его все же лучше учить уже зная джаву

1
Автор поста оценил этот комментарий
А что хорошего можно почитать по питону для начинающих?
0
DELETED
Автор поста оценил этот комментарий

Под мобайл сейчас еще флаттер набирает популярность.

0
Автор поста оценил этот комментарий
Что на счёт Vue?
3
Автор поста оценил этот комментарий

https://roadmap.sh/
Можно выбрать и специализацию, и посмотреть, что для нее нужно, в том числе и подходящие языки.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Спасибо
2
DELETED
Автор поста оценил этот комментарий

То, на чем вам нравится писать код

0
Автор поста оценил этот комментарий
1с)
0
Автор поста оценил этот комментарий

Китайский.

0
Автор поста оценил этот комментарий

На перспективу надо учить функциональное программирование и теорию категорий. То есть Haskell, Scala и т.д. В принципе еще с начала массового распространения ЭВМ в 60-70, встала задача подходить к программированию с научной точки зрения. Императивный подход не имеет под собой никакой теоретической основы. ООП это полностью провалившаяся попытка изобрести такой подход. В итоге такое же спагетти, только на сложных щщах со всякими SOLID и т.д.

Функциональное программирование - фундаментально другой подход. Любая задача или программа(любой сложности) может быть представлена как математическая конструкция, которая всегда следует небольшому набору правил. Эти правила не высосаны из пальца для решения конкретных проблем ООП, а является фундаментальными законами математики(я бы даже сказал законами вселенной).

Это будущее программирования.

раскрыть ветку (7)
4
Автор поста оценил этот комментарий

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

0
Автор поста оценил этот комментарий

вы что-нибудь пытались на Хаскеле писать?

Вот я написал маленький DSL для оптимизации некоторой игрушечной машинки (это задача 22 из adventofcode 2021).
Всего несколько стандартных оптимизаций.

Готов поспорить - на C код получился бы короче.

Так что все эти "математически доказанная" - это для теоретиков хорошо и для расширения кругозора.
На практике Haskell прикольный но малоприменимый.

раскрыть ветку (3)
0
Автор поста оценил этот комментарий

Да, у нас часть кода в продакшене на Хаскеле, остальное на Скале и полностью функциональный фронтенд на тайпскрипте с расширением fp-ts.


Единственная проблема с функциональным программированием - сложность поиска программистов способных с ним работать. Но это же и плюс )

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

Не верю ;)
Особенно меня отсылки к теории категорий в первом комменте смущают. В изучении ЯП-строения нормально, в повседневной деятельности - are you joking?

Ну так-то нас будущее лет через 10 рассудит.

Условный Rust - ok.
Скала - боле-менее ок (если убрать val x = a b c d - то будет ок).
Хаскель - примеритсья, чтобы лучше понимать откуда черпал идеи Rust. Писать - нишу можно выдумать, но не в массы.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Самая сложная проблема в программировании - как создать такую систему, которая бы решала сложные проблемы, но чтобы она состояла из простых к пониманию и созданию, неповторяющихся, и доступных к многократному использованию «модулей». То есть проблема композиции. И как раз концепции, представленные теорией категорий, позволяют анализировать и систематизировать композицию.

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

0
DELETED
Автор поста оценил этот комментарий

Haskell и ТК из общего имеют несколько заимствованных названий из второго в первый, не более.


На Haskell верифицировать ПО никто не будет. Его система типов для этого непригодна. Coq/Agda/Idris/Lean — да, но это уже не про то программирование, с которого следует начинать новичкам.


С тем, что стоит ознакомиться хотя бы в минимальном объёме с ФП, на примере того же Haskell, для общей эрудиции (на перспективу) — согласен. Но это только если есть цель разобраться в программировании «хорошо», и есть вера в свои силы.


Ну и, естественно, если разбираться «хорошо», то одним ФП не обойтись.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества