LINUX.ORG.RU

Как выбрать язык программирования?

 


1

3

Передо мной встал вопрос выбора языка. В уч. заведении мы изучали Python и C, а дома я писал на Java со Spring и мобильные приложения. Также пробовал C++ и Android-разработку на Kotlin — так прошли мой второй и почти третий курс. В уч. заведении нам говорили выбрать язык на котором будем писать диплом и курсовые работы, но при этом дают базовые знания по нескольким. Лабораторные и курсовые можно писать на чём угодно — я каждый раз писал на разных. Препод сказал что если я не выберу один из то он просто перестанет проверять мои работы. Одногруппники в большинстве выбрали Python, но у меня как-то к нему не цепляет и не срастается ничего. Я не прошу выбрать за меня я понимаю что никто за меня не выберет но за против ну или на путь какой-то натолкнете.



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

Нет, выбирать нужно язык. И расти в нем и в сопуствующих технологиях. Например C++ - это сам язык (не забываем про стандарты, необходимость иногда открывать стандарт, а это чтиво просто «прекрасное»), умение собирать проект на разных осях, разными системами сборки, разными компиляторами, умение делать развертывание, собирать пакеты по разные системы, умение заниматься отладкой, умение работать в разные ide, умение читать чужой код и искать/находить ошибки, умение ревьювать, знать на высоком уровне 1-2 основных используемых в конкретной области фреймворка или движка, например если кандидат хочет в геймдев, вероятно нужны знания UE, а если в разработку каких-нибудь прикладных продуктов, то Qt (а с Qt идет необходимость знать qml/js, что капец как добавляет знаний).

И так будет в каждом языке. Везде будут свои токости.

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

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

Ну и как он сейчас выберет? Он нихрена не понимает что это, для чего это и где пригодится. И главное - не знает, где ему потом придется и с чем работать. Вы такие простые, блин.

Хотя, в целом я подход поддерживаю - везде свои нюансы и нужно их знать. А без углубления в специализацию этого не добиться.

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

Этот параметр постоянен хотя бы последние лет 20? А что если он будет работать не по самому популярному направлению на данный момент? А что если направление изменится? Одни вопросы.

Вот я вспоминаю, всего лет 20 назад самым популярным был делфи.

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

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

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

ya-betmen ★★★★★
()
Ответ на: комментарий от LightDiver

Думаю python/c/c++ еще долго будут востребованы. А если говорить про мобилки, то Kotlin / Swift(только в этом случае придется иногда в Objective-C влазить).

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

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

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

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

Оно все на самом деле не сложно и знать много не надо, но нужна общая комбинация. Это как ноты или алфавит. Семь нот изучить не долго, музыка это ведь не сложно, правда?

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

А ты работал вообще на производстве? Ну, сам на практике. Не на абстрактном некоем общепроизводстве в вакууме, а на конкретной фабрике.

Я вот работал. В 8 приходишь на работу, в 18 уползаешь домой. Там моешься быстро ешь и падаешь спать. Просыпаешься, идешь на производство. Повторять пока кукуха не потечет и ты уже во сне не начнешь видеть этот лядский станок.

А к этому добавь абсолютно неадекватное руководство, таких же задолбанных соседей по производству, нюансы работы, где все ломается, гниет, не работает. А, ну да - и зарплату 16 тысяч (2008 год).

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

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

2008 год

не серьезно. так-то 20 лет прошло
сейчас хорошего токаря в попу целуют ибо их вот вообще нет
а вот IT после СПО это большой вопрос…

и издохнуть от работы можно и в офисе… хренача по 12-14 часов… https://www.rbc.ru/life/news/6818ac529a794724852ab36a

anonymous
()

Это инструмент, выбирают его под задачу.

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

Gary ★★★★★
()

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

Я не программист, выбирал бы между C и Python, возможно Java.

Python неплох тем, что ты можешь быстро на нем решать учебные задачи\лабы\курсовые. Если на чем-то это делается сильно быстрее без лишнего головняка - это хороший выбор. Так как, например, на том же C это потребует больше времени. Но это еще не факт.

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

Запрос выбора какого-то одного языка с одной стороны немного странный, но не катастрофа. Один момент, посмотри, что их себя представляют у вас выпускные работы, на чем их удобнее писать лично тебе. Вероятно, скоро заключительный курс. Забухай с выпускниками, пораспрашивай, сходи на преддипломную защиту посиди, посмотри. Также, выясни, какой перечень тем\задач\направление у каких преподавателей, кто из преподавателей реально толковый, а от кого ожидать нечего и стоит выбирать только если собираешься купить проект. Ну и заблаговременно тогда подойди к выбранному, чтобы наверняка.

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

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

Любое нетривиальное приложение со сложной логикой приведет к одному из двух:

1) Придется очень много думать и писать что бы успокоить borrow-checker, разбираться где что выделять а где что освобождать, выбрать типы умных указателей и менять их при каждом серьезном изменении кода

2) Облепить все счетчиками и копиями, из за чего производительность просядет ниже Python, а количество кода будет больше, сплошные минусы

Даже в более требовательной к производительности сфере, gamedev, некоторым этот недостаток Rust все сильно обламывает. А в вебе это сравнимо к возврату в 90е с C&CGI.

Преимущества Rust они какие? Если взять сферы где не требуется высокая производительность, то: привычный язык взявший многое из С, ADT, и строгая типизация. Это все может предоставить TypeScript.

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

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

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

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

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

не течет (если сравнивать…с чем угодно)

От утечек там есть деструкторы, которые еще нужно правильно применить, так что по сравнению с GC такой подход скорее минус. А вот с C++ они равны, но у Rust есть преимущество в другом, там трудно допустить ошибку работы с памятью, когда что то куда то переместилось а ты используешь не тот объект итд.

А какой GUI ты используешь на Rust? Хочу взглянуть.

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

https://www.egui.rs/

Можно прямо на сайте потыкать. Написано все как раз на расте и позволяет оценить все на месте.

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

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

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

Ну я и не говорил что нужно вызывать вручную, в С++ они тоже сами срабатывают.

Однако если у тебя объекты с неизвестным временем жизни, да еще и с временем жизни определяемым во время выполнения, то придется самому разбираться когда их убивать. В языках с GC можно почти все из этой работы переложить на GC.

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 3)
Ответ на: комментарий от LightDiver

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

Нет, они ничем не отличаются от Rust по этой части. Плюсы так же совершенны как и Rust по части очистки. Про стековые элементы ты уже сказал, они везде сами очищаются и без деструкторов, даже в С, а вот динамические:

Rust Box = C++ unique_ptr

Rust Rc = C++ shared_ptr

Итд.

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

И про сборщик: Вот работаю я сейчас с луа5.1. Сборщик проходит где то раз в 2-3 минуты. При это люто все подлагивает, прям интерфейс зависает на долю секунды. А между проходами все может настолько люто протекать, что обычная работа с чатом выжирает память по несколько мегабайт за тик. Если уже больше 10 пользователей одновременно возьмутся работать - это кирдык. Они меня повесят к хренам.

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

Есть плохие сборщики мусора, есть хорошие. Есть даже сборщики мусора для real-time систем. В Unity используется C#, многие игры работают очень неплохо. В UE используется тоже сборщик мусора. В ядре в некоторых частях тоже ограниченно используется.

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 3)
Ответ на: комментарий от LightDiver

Если ты уже разобрался с Rc<> в Rust, то наверное знаешь что там просто стоит счетчик объектов которые используют ресурс. Если 0 объектов используют ресурс, то он удаляется.

В Python и 1С GC построен как раз построен так, там просто все объекты обернуты в Rc<>, и нету сборщика мусора который запускается периодически, и все объекты удаляются в тот самый момент когда становится известно что они больше не нужны, нету отложенной очистки.

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

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

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

А вот про раст - есть у меня телеграм бот. При старте он жрет 5.9мб озу. Через неделю аптайма он жрет.. 5.8мб озу. Ну каеф же? Ну где еще такое увидишь? Вот я нигде не встречал больше такого.

К слову, на питоне такой же бот со старта жрет 40-50мб, через сутки 150мб. С той же функциональностью. Правда на питоне еще и таймер приходится ставить между чтениями в пару секунд, а то он еще и процессор выжирал.

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

Ну где еще такое увидишь? Вот я нигде не встречал больше такого.

У меня много приложений работает без утечек памяти %) Но у Python с библиотеками могут быть проблемы вполне, да.

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

К слову, на питоне такой же бот со старта жрет 40-50мб, через сутки 150мб. С той же функциональностью.

если он и дальше так «течёт» на 100 МБ в день, то утечка ищется профилировщиком памяти. В большинстве случаев это ошибка в коде программиста, иногда в коде библиотек, и очень редко - в runtime ЯП.

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

если API, которое ты используешь, возвращает сразу при отсутствии данных, а не блокирует, то логично, что при вызове в цикле будет «жор» CPU.

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

Ну и сравнивать низкоуровневый Rust и скриптовый Python несколько странно.

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

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

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

rumgot ★★★★★
()

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

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

Вон, тоже Ada был безопасной альтернативой С, даже софт писали. И где оно?

Очередная версия свободного компилятора GNAT вышла весной прошлого прошлого года. Последняя версиям стандарта ISO/IEC 8652:2023. Используется в тех применениях для которых и делалось - написание программных систем высокой надежности. Другой вопрос что Ada не рекламируется,поэтому слышим мы о ней мало,и уж тем более на русском языке. Применительно к линуксу - компилятор есть во всех основных дистрибутивах, можете взять и пользоваться. К сожалению - не особо много готовых бесплатных библиотек. То есть писать самому придется больше.

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

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

watchcat382
()