LINUX.ORG.RU

Какой язык выбрать из Java, C++, C#, Kotlin?

 , , ,


1

5

Всем привет! Я решил изучать программирование и посмотрел видео о языках. Мне понравились 4 языка: Java, C#, C++, Kotlin. C++ потому что он работает на уровне железа и на нём можно писать интересные и сложные штуки; Java потому что на нём можно писать банковские приложения и у него больше всего вакансий; C# потому что он похож на Java, но намного проще; Kotlin потому что если знаешь Java, то знаешь и Kotlin, и на нём можно писать под мобильные устройства. Что бы вы посоветовали выбрать?

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

Я бы начал либо с Java, либо с С++. Java проще, C++ универсальнее, и под него можно писать всё то же самое, что на Java, но ценой несколько больших усилий. Синтаксис похож.

C# за пределами экосистемы Microsoft не особо живой, хотя с этим здесь многие не согласятся, есть исключения вроде ASP.Net, но изначально C# разрабатывался по одной-единственной причине: потому, что Java не являлась собственностью Microsoft. Kotlin, как ты верно заметил, имеет смысл осваивать после Java.

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

Поэтому выбирай между C++ и Java (можешь монетку бросить) и начинай изучение. Сейчас ты сидишь на берегу в жаркую солнечную погоду, потеешь и думаешь, что лучше, кролль или брасс. Заходи уже в воду :)

hobbit ★★★★★
()

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

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

… разрабатывался по одной-единственной причине: потому, что Java не являлась собственностью Microsoft.

https://www.cnews.ru/news/top/sun_vs_microsoft_antimonopolnyj_isk?ysclid=mejqhi4kil834532677 11 марта 2002 13:03 |
Sun vs Microsoft: антимонопольный иск на $1 млрд.

Если не ошибаюсь, то Miscrosoft помирилась с SUN тем, что залатили 1 млрд. на получения лицензии на использование Java (что-то типа этого),

«Богатые тоже платят» (c)

anonymous
()

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

Для изучения посоветую 5-ое издание «Освой самостоятельно C++ за 21 день» как базу, дальше остаётся лишь творческий подход и поиск прикладных задач, решая которые, вы бы развивали навык и любопытство и настойчивость в плане развития навыков, глубины и ширины знаний по языку, в том числе возможности новых стандартов, фреймворки и библиотеки и пр. Для дополнительного развития я бы порекомендовал после плюсовой базы также

  1. углубится в чистую сишку, чтобы прочувствовать и осознать, какие проблемы решили и какие добавили, плюсы относительно своего предшественника,
  2. Go, как альтернативное видение развития плюсов и в частности посмотреть то, как можно сделать удобным программирование многопоточных приложений
  3. Посмотреть Lua, как один из удачных языков сценариев и посмотреть как взаимодействуют языки сценариев с нативно компилируемым кодом(написанным на C/C++), дабы невелировать свои недостатки.

В целом для меня самыми полезными вещами при изучении было два ключевых момента:

  1. Выбор плюсов в качестве первого языка - кругозор, после которого переключение на другие языки, вроде паскаля, го, сишки, джавы, котлина, луа и питона было ненакладным.
  2. Творческий, ищущий подход - по мимо простых задачек и вопросов из самоучителя, что отмечал выше, я стабильно придумывал себе интересные задачи, это и написание сортировок, различных функций, упрощающих мне же обучение, а также написание примитивных игр, вроде классической змейки, 2048, клона Flappy Bird и др., которые я делал даже не на плюсах, а раде развлекухи на паскале(в PascalABC среде - там простенькая графическая библиотека).

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

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

Я и сейчас. Но без си и раст не работает. Вот написал я либу на раст. Половину функций надо писать вручную, работает все это через интерфейс си.

Поэтому сервер пришлось написать на раст, а вот клиент на питоне с подключенной си библиотекой. И это приносит мне страдания.

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

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

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

скорее не с асма (то ещё построчное уродство)

а с модели адрессуемой памяти и какого набора комманд

ваще одна из причин почему так впечатлён We Programmers Бобушки Мартина - так тем тривиальным фактом что наборы команд больших машин периода «1945» - «до микропроцессоров»(не включая) были очень малочисленные - (но как правило подобно стрелки пирса али штриха шифера)и не очевидны :) - особенно первые машины где ваще только сложение без регистров - ибо вся память влучшем случае тысяча 72битных слов и набор команд чисто читай пиши вычитай память

почти как машина_одной_команды - т.е изначальные были двух адрессными и даже трёхадрессными и без служебных регистров :)

ваще единственное что нужно реально знать что память адрессуема и однородна ну и

структруры управления

структуры данных

структуры хранения данных

;)

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

скорее не с асма (то ещё построчное уродство)

Что не асма? Я с него начал :) Зачем ты со мной споришь, я лучше знаю, с чего я начал!

а с модели адрессуемой памяти и какого набора комманд

Да, с понимания, что там под капотом происходит.

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

все мы начинали с «игр с чипом» «петя бейсиков с машей ... в алгоритмичесом городе» кто и с «энциклопедии профа фортрана»

не всмысле ты не с асма(очевидно с) - а в смысле

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

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

ибо то что (и чем дальше чем больше) люди реально за объектами ( если это не с++/c/rust) очень плохо отдупляют как это на железе в какие битовые последовательности ( не буквально а именно структуры - графы(сети) связей)

[upd]

вот игроМашинка

из

Компьютерные науки. Базовый курс, Гленн Брукшир, Деннис Брилов

Vole Machine Language

https://machinelanguage.vercel.app/

https://brookshear.jfagerberg.me/#

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

бекенд тоже можно на котлине писать, совместим с java.

У себя дома ты можешь писать хоть на баше. А когда устраиваешься в компанию, особенно джуниором, то писать ты будешь на том, на чём скажут. И бэкэнд это процентов на 80-90 жава (если сравнивать с котлином). А котлин это процентов на 80-90 мобилка. Поэтому не стоит учить котлин в расчёте писать бэкэнд.

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

Java - можно любить или ненавидеть, но это всё-таки уже legacy. Я очень сильно удивлюсь, если услышу, что в какой-нибудь компании решили делать новый проект в 2025-2026 году, и для реализации взяли Java. Ну только если компания уже пишет на Java много лет, накоплены компетенции, все сотрудники знают исключительно Java…

Это глупость. Java не legacy. Это старый язык, на котором хватает legacy проектов, но сам язык активно развивается, фреймворки и библиотеки активно развиваются. И новых проектов на Java хватает.

vbr ★★★★★
()

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

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

А если ради хобби, то учи к чему душа лежит.

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

C# за пределами экосистемы Microsoft не особо живой, хотя с этим здесь многие не согласятся, есть исключения вроде ASP.Net, но изначально C# разрабатывался по одной-единственной причине: потому, что Java не являлась собственностью Microsoft. Kotlin, как ты верно заметил, имеет смысл осваивать после Java.

Это утверждение в целом верно было когда-то, лет 10-15 назад. Но не сейчас. Лично я уже который год делаю проекты на .net core, которые никоим образом никак не соприкасаются с экосистемой майков. Речь исключительно про коммерческий опыт, если что.

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

изначально C# разрабатывался по одной-единственной причине: потому, что Java не являлась собственностью Microsoft. Kotlin, как ты верно заметил, имеет смысл осваивать после Java.

Протухшая аргументация такая протухшая. В эту игру можно играть вдвоем «Изначально java не была собственностью Oracle» (ТМ)

anonymous
()

Ну ты же сам расписал, что разные языки для разных задач больше подходят:
java - ынтерпрайз (хотя сейчас тот-же go активно отжирает эту нишу)
C# - гемйдев
Kotlin - мобильные (android)
C++ - десктопные/серверные приложения (раз уж go упомянул, то в эну пишу лезет rust)

вот и выбирай исходя из того чем хочешь заниматься

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

Даже у Оракла нет любимой ОС, под которую в основном заточена Java. А у MS есть. Ну для начала, где для C# дефолтный изначально кроссплатформенный графический тулкит? Windows-only – есть.

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

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

Починил. В таком варианте – пойдёт. В качестве первого – категорически нет.

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

Правильно, чтобы сразу рукожопом стать :) Можно ещё сразу JS брать.

Жаль, что «стать программистом» ныне в трендне.
Весьма жаль.
Это прям как болезнь.

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

А я бы начал с питона, если уж прям совсем первый ЯП;-)

Годами ранее «копал» объектную архитектуру Python и частично понял почему он такой медленный.
Нужно ныне «покопать», а вдруг что что-нибудь хорошее появилось.
Впрочем это не наезд на Python …

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

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

Питон отличный ЯП в своей нише, и за счет низкого порога вхождения отличный первый ЯП.

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

Даже у Оракла нет любимой ОС, под которую в основном заточена Java. А у MS есть.

Э… И? C# вообще ECMA-стандартный. Где «швабодные» реализации? Ах да, фанатикам застил глаза фанатизм. При том что в том смысле который вменяют шарпу, жаба никогда свободной не была (иначе санки не залупались бы на майкрософт), а после анального огораживания ораклом и подавно.

Ну для начала, где для C# дефолтный изначально кроссплатформенный графический тулкит? Windows-only – есть.

Авалония работает? Работает. У тебя криокамера протекла?

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

ибо те же приколы с рефлексией, настройка поведения ВМ, настройки и тюнинг сборщиков мусора и пр. и пр.

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

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

Собственно Java для этого и создавалась: снизить требования к квалификации программиста, ускорить разработку, упростить поддержку кода.

КМК, у неё это не очень вышло. Всё, связанное с Java, поражает какой-то монструозностью, тяжеловесностью, зубодробительными решениями из начала 2000-х, которые выглядят полным анахронизмом (привет, XML!).

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

Ну вот и я про то…

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

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

Не только. На java написан опенсорсный 4diac для запрягания железяк по IEC 61499

Кстати, а почему тогда софт в области АСУТП в основном пишется на Си++/QT, а не на скажем Java/Swing (или Eclipse SWT)?

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

КМК, у неё это не очень вышло. Всё, связанное с Java, поражает какой-то монструозностью, тяжеловесностью, зубодробительными решениями из начала 2000-х, которые выглядят полным анахронизмом (привет, XML!).

Напротив, вышло хорошо, потому что жаба плотно заняла свой ынтерпрайзный-копроративный сектор в 2000-2020 годах и сидела там безраздельно. Только в последние годы жабу чуть-чуть начала покусывать C#-гадюка и Kotlin.

Этот сайт, например, на Java + Scala написан. И это хорошо. Будь он на PHP-говне каком, постоянно бы ломался и хлопал персональными данными в инет.

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

Кстати, а почему тогда софт в области АСУТП в основном пишется на Си++/QT, а не на скажем Java/Swing (или Eclipse SWT)?

На чём только оно не пилится. Вон, на ЛОРе даже проскакивали подобные штуки: Java'чка крашенная

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

Кстати, а почему тогда софт в области АСУТП в основном пишется на Си++/QT, а не на скажем Java/Swing (или Eclipse SWT)?

Иди почитай что такое 4diac, особенно на чем исполняется то, что конфигурится этим жабософтом, и… на чем вообще работает все любое относящееся к IEC 61499. Там далеко не везде C++, QT вообще скорее всего в доморощенных велосипедах. А логика пишется на FBD, ST, SFC, «лестницах» – т.е. совсем не обязательно на сишке-плюсишке. А SCADA пишется на чем удобнее, т.к. ее скорость все одно не может быть быстрее чем человек реагирует.

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

Авалония работает? Работает.

Оно идёт с дотнетом по дефолту? Насколько я вижу, это сторонний проект.

ко-ко-ко швабодные ко-ко-ко фанатикам ко-ко-ко красноглазиков

А, ну ясно.

hobbit ★★★★★
()

C++ потому что он работает на уровне железа и на нём можно писать интересные и сложные штуки

Java потому что на нём можно писать банковские приложения

C# потому что он похож на Java,

Kotlin, и на нём можно писать под мобильные

Что бы вы посоветовали выбрать?

На этапе «я учусь программировать» всё не в кассу. Выбирай относительно универсальный язык, заточенный под учебные цели. Раньше это был Паскаль, сейчас скорее какой-нибудь python или может даже golang.

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

Оно идёт с дотнетом по дефолту? Насколько я вижу, это сторонний проект.

Тебе шашечки или ехать? С дотнетом по дефолту много чего «не идет» – оно из репозитория Dot Net Foundation ставится через NuGet

ко-ко-ко швабодные ко-ко-ко фанатикам ко-ко-ко красноглазиков

ко-ко-ко майкрософт, то ли дело оракловые ко-ко-ко

А, ну ясно.

Ясно что твоя сова порвалась. А потом и ты порвался.

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

оно из репозитория Dot Net Foundation ставится через NuGet

Поправлю. Из другого репозитория, nuget.org Но таки да, ставится. С сорцов собирать тоже никто не мешает. Но эти ломающие новости никогда тут не мешали считать дотнет «хуже» жабы по совершенно надуманным и давно не актуальным причинам (касательно вендорлочности дела как бы не наоборот по сравнению с «вечнозелеными» бородатыми предрассудками).

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

Кстати, а почему тогда софт в области АСУТП в основном пишется на Си++/QT,

Вопрос, у кого-нибудь еще нативный linux клиент телеграм периодически крашится? :)

Хотя может это не сам Qt виноват, а все что там слинковано для проигрывания видео. Под android такой хни нет.

anonymous
()

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

Зависит от возраста, рода занятий.

Если молод (и горяч) и есть время, то начало с C/C++ даст более фундаментальную подготовку. Если немолодой и надо быстро «войти в профессию», то, как уже не раз тут сказали, выбирать надо предметную область, а уже от нее — язык.

Ecl
()