LINUX.ORG.RU

Куда двигаться дальше, если попробовал много языков, но нигде не смог углубиться?

 


0

3

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

За последние несколько лет я пробовал изучать Python, Java, C#, C, C++, Go и JavaScript. Везде получил какие-то базовые знания, где-то чуть больше, где-то меньше, но ни на одном языке так и не задержался надолго. В итоге у меня получилась довольно разрозненная база и ощущение, что я постоянно начинаю что-то новое, но никуда это не довожу.

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

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

Поэтому вопрос к тем, кто уже прошёл этот этап: как бы вы выстроили обучение в моей ситуации? Стоит ли сейчас остановиться на C++ и сначала системно закрыть пробелы, а потом идти в системщину? Или лучше выбрать конкретный большой проект и изучать всё необходимое по ходу?

И ещё более общий вопрос: есть ли смысл вообще продолжать пытаться идти в программирование, если я столько раз начинал разные языки и ни на одном не смог надолго задержаться? Может быть, мне стоит попробовать другое направление, а не продолжать бесконечно искать «своё» в программировании?**

Буду особенно благодарен за советы не в стиле «учи X, потому что он востребован», а за личный опыт: как вы сами наконец выбрали направление, перестали метаться между технологиями и поняли, что хотите заниматься именно этим.

Если есть конкретные книги, курсы или проекты, которые хорошо подходят для перехода от разрозненных знаний к нормальному фундаменту, тоже буду благодарен.

Перемещено hobbit из general

Ответ на: комментарий от zagran_passport

есть исторические(на ряду с иными) отличия между университетом(от болоньи и даже дома мудрости у багдатки и можид прогулаками парка акада) и тех институтом хумбульда(братана министра)

ты сыт духовно а душевно а физисиски?

уже восемь не равновероятных вариантов траектории

делай апли-залипухи - вплоть до однострока-скриптика(нужная по месту инструкция с параметрами доставляющая пользу)

большой код чаще всего обусловлен дефицитом офицесов(не по лычкам а по сути) и избытком пихоты(не по лычкам а по сути)

т.е. практикуй и подкуривай опыт человейника в направлениях текущей твоей практики - чем более абстрактно тем как приправа тоньше к блюду но и 10 литров воды попсятины подрывают клеточную помпу

qulinxao3 ★☆
()

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

SpaceRanger ★★★★
()
Ответ на: комментарий от qulinxao3

Тема: Классический универ vs гумбольдтовский НИИ. И почему enterprise-код пишут пехотинцы?

Накатила тут философская суббота (хоть и вторник), решил набросить и обсудить исторические отличия в когнитивных траекториях. Короче, в чём принципиальная разница между классическим универом (начиная от Болоньи и заканчивая арабскими «Домами мудрости» и прогулками в садах Академии Платона) и гумбольдтовским технологическим институтом? По мне так:

  1. Старый универ — это чисто про «поговорить», сохранение канонов и схоластику. Там студент был заказчиком, который просто башлял профессору.
  2. Гумбольдтовская модель (привет брату министра) — это когда обучение намертво привязали к исследовательской практике (Forschung und Lehre). Ты не просто зубришь маны, ты пилишь коммиты в науку вместе с профом.

Отсюда вопрос к all: вы вообще как, сыты духовно, душевно и физически? Похоже, у нас тут нарисовалось как минимум восемь неравновероятных вариантов развития. Вместо того чтобы городить огород, предлагаю практиковать автоматизацию и пилить быстрые костыли/«залипухи» — вплоть до полезных однострочников, которые доставляют пользу здесь и сейчас.

И да, наболело про разработку. Огромные простыни говнокода и раздутые репозитории в энтерпрайзе — это всегда дефицит нормальных архитекторов («офицеров» не по лычкам, а по уму) и паркинсоновский переизбыток формошлёпов («пехоты»).

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

Чтобы два раза не вставать, держите три полезных скрипта, которые бямы «юзают»:

  1. Найти 10 самых жирных файлов/директорий в хомяке, чтобы вычистить кэши: bash du -sh * | sort -rh | head -n 10 Use code with caution.
  2. Быстро поднять локальный веб-сервер без Nginx и прочего жира: bash python3 -m http.server 8080 Use code with caution.
  3. Глянуть топ-5 процессов по жору ОЗУ (когда клеточная помпа уже на пределе): bash ps aux –sort=-%mem | awk ‘NR<=6 {print $2, $4, $11}’ Use code with caution. Обсуждаем. Кастуйте архитекторов. Пехота — мимо.
qulinxao3 ★☆
()
Последнее исправление: qulinxao3 (всего исправлений: 5)

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

тут водопад дорог корректируй свои планы меньшими по времени итерациями - т.е. уреж леща в части скорости освоения при этом желательно «вести дневник» как меняется ожидаемая цель и обьём понимания

углубляйся в жизнь

qulinxao3 ★☆
()
Ответ на: комментарий от algo

Что тут называется «низким уровнем» ?

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

vM ★★★
()
Ответ на: комментарий от vM

на фортране можно писать на любом языке

именно поэтому бывает информативно натыкаться на код в синтаксисе реально очень hh(+)l языка в котором именно из за синтаксиса заточенного на некотую область приложения(ака application domain) какая нить низость для цвм вида +1 выливается чуть ли не словесное описание аксиоматики Пеано и прочей высокоуровневости реально обусловленное безблагодатностью сеньёр_тинейджер-архитекторов

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

qulinxao3 ★☆
()

Куда двигаться дальше, если попробовал много языков, но нигде не смог углубиться?

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

qulinxao3 ★☆
()
Ответ на: комментарий от zagran_passport

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

Возможно, по верхам ты уже наскакался. Предлагаю подумать, какую реально полезную открытую программу ты сам бы хотел написать. Желательно такую, которую можно развивать продолжительное время, касаясь разных смежных областей. А там и язык будет подтягиваться. И C++ хороший выбор и Rust хороший выбор, я думаю.

Только не начинай злоупотреблять ИИ-помощниками раньше времени. Они очень полезны… для того, кто может посмотреть код и убедительно объяснить ИИ-помощнику, в чём он не прав. Я так несколько дней с Дипсиком дискутировал, он мне всё предлагал вставить в программу костыль вместо правильного решения. В итоге я его всё же переспорил, и он сделал правильно.:) (Но если что, это было не по работе, а в хобби-проекте, которым я занимаюсь в редкие минуты свободного времени.)

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от algo

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

hobbit ★★★★★
()
Ответ на: комментарий от algo

шмяк шмяк + агенты = продал в фирму «одногорца с той же долины» если штат 10к то куча людей осваивать(хотя бы палочкой потыкать для работы работанья) как итог - очередное эксклюзивное по со стабильным кэшфло

в том и гумманость времени что всем хватает на всех

qulinxao3 ★☆
()
Ответ на: комментарий от vM

нет просто потом в колледже учился веб разработке, и както сошло на нет, а так нравилось чтото придумывать делать инженерное дело мне нравиться 100% это

zagran_passport
() автор топика
  1. Ты или знаешь C до уровня ассемблера, или ты не умеешь программировать.
  2. Сегодня заходить в айти без оглядки на ИИ мягко говоря опрометчиво. Ты должен учиться слушать бизнес и разрабатывать софт, который решает бизнес-задачи. Т.е. сразу выполнять работу аналитика, проектировщика, архитектора, кодера (это за тебя сделает клод), тестировщика (тоже клод) и т.п.

Если с С разберешься, то дальше все языки одинаковые (оно так и есть)

max_lapshin ★★★★★
()
Ответ на: комментарий от max_lapshin

Ты или знаешь C до уровня ассемблера, или ты не умеешь программировать.

s/программировать/кодить/

Тезис про «настоящие программеры только те, кто задро* в Си» устарел лет на 20+. Слишком много микроменеджмента.

А вот правило Гринспена still holds.

Сегодня заходить в айти без оглядки на ИИ мягко говоря опрометчиво.

Так а тогда и С не нужен. Вайбкодить можно на любом языке не приходя в сознание.

anonymous
()

Ты мыслишь в корне неверно. ЯП - это последнее, что надо учить в программировании.

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от anonymous

Не соглашусь с тобой.

Я говорю именно про программирование, ведь тебе надо уметь перекладывать жизненные ситуации на модели компьютера. Как ты можешь это делать, если не понимаешь битики и байтики?

max_lapshin ★★★★★
()
Ответ на: комментарий от max_lapshin

> Как ты можешь это делать, если не понимаешь битики и байтики?

Это важно и нужно. Но знание Си будет скорее мешать этому.

> модели компьютера

Модель Си — такой же абстрактный конь в вакууме, как Java. Она не ложится на устройство современного компьютера [1].

[1]: https://queue.acm.org/doi/10.1145/3212477.3212479

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 1)

как бы вы выстроили обучение в моей ситуации

прям щас я бы стал вайбкодером

x905 ★★★★★
()
Ответ на: комментарий от max_lapshin

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

как реакция на преддыдушие сны разума Сишка отличный антидот жаль что у Томпсона была задача засунуть компилятор Фортрана аж в 4к оперативы отсюда пока Ритчи не прикрутил недоструктуры(чьи поля в лучших традициях pl/i были глобальными смещениями к любой базе) у Томсона разбивались все предыдущие попытки отвязять unix от конкретной железки

Сишка вполне годный переносимый структурный ассемблер однако тот же pl360 как введение в тему проще ибо опятже не путает констрантые смещения с перемеными указателями

qulinxao3 ★☆
()
Ответ на: комментарий от max_lapshin

Я говорю именно про программирование, ведь тебе надо уметь перекладывать жизненные ситуации на модели компьютера. Как ты можешь это делать, если не понимаешь битики и байтики?

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

Жизненные ситуации? Ну хорошо. Вот тезис: Программирование относительно сложных программ на Си - это построение ледокола при помощи болгарки, заклепочника и шлифовальной машинки. Можно? При должном упорстве и потратив массу времени - да, наверное. Научишься строить корабли? Нет, научишься резать, клепать и полировать металл.

Да и касательно битиков с байтиками: перекладывать «битики и байтики» Си может, но т.к. он многоплатформенный, то там есть масса оговорок. А некоторые вещи там неинтуитивны, касательно «битиков». Почему, например, у >> и << приоритет ниже, чем у операций сравнения?

anonymous
()
Ответ на: комментарий от anonymous

за этим лесом уже не видно деревьев

Да, тоже проглючило. Наоборот, конечно же =)

anonymous
()
Ответ на: комментарий от SpaceRanger

вкатило ковыряться в бинарных файлах

А, что там, в бинарных файлах? Моддить БИОС? Разбирать прошивку маршрутизатора? Или что?

mky ★★★★★
()

В пицценосцы. Или курьером. Говорят им платят больше чем программистам. Ещё советуют плиточником.

wenxuan ★
()
Последнее исправление: wenxuan (всего исправлений: 1)
Ответ на: комментарий от zagran_passport

мне лучше этому больше внимания уделить чем самому языку?

Больше времени нужно уделять конкретному проекту/продукту (или во мн. числе). Технологии для освоения выбирать, исходя из этого. Языки/прочие инструменты тоже.

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

  • школа - Бейсик/Паскаль (VB/Delphi);
  • университет - Паскаль (bpc/dcc32), ассемблер IA-32 (давали основы ассемблера, но я углубился; на физмате почему-то Си уделяли мало внимания);
  • just for fun - Си(пп), ассемблер;
  • первая работа - Си(пп) - в основном писали «контентные» приложения под Windows наподобие энциклопедий;
  • дальнейшая работа и хобби - РНР, Си(пп) и позже Гоу - серверное (веб-)программирование.
estic
()

ИМХО проще выбирать интересные задачи и плясать уже от них. Знание языков - это хорошо, конечно, но вообще ни разу не решает. Будут решаться задачи, будет и скилл нарастать. С++ в принципе полностью никто не знает, даже сам комитет.

Из личного: мне тут надо было решить задачку, на которая хорошо ложиться на electron и TypeScript. С первым я знаком поверхностно, второй - слышал, что такой есть и транслируется в JS. Ну, в принципе, полтора месяца мне хватило, чтобы боль-мень это изучить и въехать в тему. Не сказать, что я на этом стеке прямо крут, но задача решена (продукт работает) безотносительно того, знал-ли я язык или нет - узнал в процессе решения.

SkyMaverick ★★★★★
()

Твой набор неполный, и он страдает однобокостью. Сильно не хватает ФП для более полного представления о современном программировании. Рекомендую начать погружение в новую область с языка OCaml.

anonymous
()
Ответ на: комментарий от anonymous

Рекомендую начать погружение в новую область с языка OCaml.

OCaml для позеров. Только StandardML, чтобы уж сразу с полным погружением.

anonymous
()
Ответ на: комментарий от zagran_passport

Если ещё не надоели языки, почему бы не изучить языки высокого уровня, на которых «пишут» самоё вычислительную технику, а не программы для неё? 💡

algo
()
Ответ на: комментарий от anonymous

Мысль интересная, только потянет ли? Всё-таки ФП - особый мир, и надо либо иметь специальное образование изначально, либо чуть позже, когда остальное программирование станет элементарным. Я бы чуть позже в ту сторону смотреть начал.

bbc69
()
Ответ на: комментарий от bbc69

либо иметь специальное образование изначально, либо чуть позже

Мозги надо суметь повернуть прежде всего. Вот CPS тот же взять (который continuation passing style). Оно таки да, и в жаваскрипте возможно (и часто вижу, что так пишут), но тем не менее, к этому надо привыкнуть, если из алгольной императивщины пришел.

anonymous
()
Ответ на: комментарий от bbc69

Если человек освоил целую плеяду императивных языков, то логичным шагом было бы посмотреть в сторону функциональщины - будь то статические OCaml, Haskell или динамические Common Lisp со Scheme и clojure.

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

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

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

anonymous
()
Ответ на: комментарий от bbc69

А кому-то может и понравиться математическая красота функционального программирования, как сама идея, так и различные ее воплощения. Еще одна причина обогатить свой кругозор. Тогда тоже зачем ограничивать себя узкими рамками двух-трех языков мейнстрима? Чтобы что?

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

anonymous
()
Ответ на: комментарий от anonymous

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

bbc69
()
Ответ на: комментарий от bbc69

Мысль интересная, только потянет ли?

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

Всё-таки ФП - особый мир

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

и надо либо иметь специальное образование изначально, либо чуть позже, когда остальное программирование станет элементарным.

Нет, не надо. А второе отчасти в некоторых случаях даже может мешать. «Прогроаммисты» на Java и C#, которые начинали и заканчивали этими языками, прям глубоко в них погрузившись, обычно больше потеряны для программирования, чем даже те, кто совсем ещё «девственный». И да, я в курсе, что и в Java и в C# элементы ФП доступны. Это ничего не меняет.

Я бы чуть позже в ту сторону смотреть начал.

Когда ещё позже? Чел уже изучил кучу языков, ему уже слегка поздно, нежели рано. Но лучше поздно, чем никогда. Куда, блин, ЕЩЁ позже-то?..

CrX ★★★★★
()
Ответ на: комментарий от bbc69

Вот, это тоже очень важно для меня, чтобы было надежно!

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

Кто-то там писал о том, что на Си можно написать любые алгоритмы. Иммутабельные структуры данных там писать будет больно. Даже через умные указатели C++ будет больно. Так что, язык тоже имеет значение.

А порог входа высокий. Это есть.

anonymous
()
Ответ на: комментарий от anonymous

Кто-то там писал о том, что на Си можно написать любые алгоритмы. Иммутабельные структуры данных там писать будет больно. Даже через умные указатели C++ будет больно. Так что, язык тоже имеет значение.

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

bbc69
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария