LINUX.ORG.RU

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

 , , ,


1

5

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

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

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

Ну на Scala все покороче будет:

val d: BigDecimal = (a + b) / c * BigDecimal(2) + BigDecimal(100)

final case class CustomerAddress(
  var customerStreetNumber: Int,
  var customerStreetName: String,
  var customerAptNum: Int
)

В Java уже Record-ы добавили BTW. Было бы неплохо, чтобы и дальше рутину убрали б. Но тут главное вовремя остановится, чтоб язык не сильно заумным стал.

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

Как стать хэкером. Эрик С. Рэймонд

Статья не теряет своей актуальности. Python, C, Perl и LISP - из этого списка я бы только Perl не рекомендовал (он только для ценителей). Вместо него как раз можно Java какую изучить. К Lisp в пару просится Haskell, чтобы повернуть мозги и увидеть еще один способ программирования.

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

https://youtu.be/qhzTawm3_6Y?t=1143 The Evolution of Programming | The Standup

Pascal -> C

+ python для быта

+(ba)sh/cmd для комп машинерии

пока студент рабкотай и учись : структуры (управления|данных|хранения данных

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

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

Кстати, топик-стартер, вот котлин похоже выглядит. Авторы котлина очень и очень многое взяли из Скалы. Но как я тебе уже пару раз писал выше (топик-стартеру), не знаю, какие есть учебники по котлину для новичков. А так, котлин прямо хорош (но я бы взял scala 3 для себя)

anonymous
()

Фиг знает.. на гошечке фигачить, растишке…

HTML сайта глянешь, там про «отсталый» utf-8 даже ещё не слышали. 1251 во весь рост)))


( Это я к тому, что бессмысленно полагаться на советы, изучай статистику.)

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

while (1){
	std::time_t result = std::time(nullptr);
	if("default"==input1){
		switch(input){
			case "full":set_full_time(&result);break;
			case "not_full":set_hms_time(&result);
		}
	}else if("tabletki"==input){
		set_timer_tab(&result_tab, std::stoi(input1), &count);
		if (count == 5)	break;
	}
	Sleep(1000);
	system("cls");
qulinxao3 ★★
()

Ruby изучай, где покупать мощностя/пространство под проект.. это потом.. как нибудь спросишь)))

3 Щас пока слушай советы! Ими же потом и осудишься, что идиот - нафига слушал?. Мбуахаха))))

Соц. инжэнэрию тоже подтяни, пригодится.

anonymous
()

Всем привет! Я решил изучать программирование

Знаете, программисты учатся всю жизнь и каждый день.
Такая это профессия.

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

Python, C, Perl и LISP - из этого списка я бы только Perl не рекомендовал (он только для ценителей).

Перл хорош тем, что там кишки просвечивают и хорошо видно как на самом деле работают динамические языки. Разница между ссылками и значениями, между compile time и run time, неприглядная сущность ООП. Вот это всё в питоне замаскировано сахаром. При этом перл достаточно высокоуровневый, и там не придется заниматься байтодрочерством. Ну и книга Ларри Уолла прекрасна. Perl Cookbook тоже классика жанра.

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

я все понял, вы крутые все знаете, но я так ничего и не выбрал((((

Предлагают в треде Java, C#, C++. Котлин не ругают, но и не предлагают.

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

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

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

ну если Python через

https://docs.python.org/3/tutorial/index.html (который для уже умеющих в «процедурное» именно как второй язык - достаточно быстро про id и прочие потроха )

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

perl хорош тем что вынуждает быть аккуратным в заклинаниях

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

Так не пишет ни кто, пишут: this.customerStreetNumber = value

А, еще длиннее пишут? Ну извини, не могу комментарий отредактировать. Дальше ты про инструменты кодогенерации пишешь, это было в моем комментарии, добавить мне нечего.

Сравнивать манипуляции с интами(?) и с числами с бесконечным количеством знаков некорректно.

Сравнение очень корректное, в COBOL точная BCD арифметика произвольной длинны. В Java нету BCD арифметики, но BigDecimal справляется с этой задачей. По хорошему, во втором примере я должен был вместо Integer тоже BigDecimal поставить.

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

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

Не могу, в Java операторы есть для Integer, Float, первый без точки, второй с потерей точности, а в COBOL как я уже написал, произвольная длинна BCD арифметики.

все обернутое геттерами/сеттерами легко оборачивается как рефлексией так и всякими мудреными фактори

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

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

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

Вообще если говорим про сеттеры геттеры, как так получается, что с одной стороны Java программисты говорят «ну сгенерируй просто каждый набор getter/setter в любой структуре, и потом обновляй его, не забывая при измении структуры» и это Ок, и при этом на защиту getter/setter они встают с позиции «ну не сгенерирует же тебе IDE getter/setter если у тебя переменная структуры меняется в разных местах по коду, а ты захотел добавить дополнительное поведение к этому» ???

Ну и к примеру, взял я через getCobol21c() объект JavaLanguage, и теперь сделал JavaLanguage.setName(«ya ne cobol»), помогли в таком случае getter/setter?

можно писать коротко и прямо

Невозможно, попробуй перепиши кратче чем в COBOL мои примеры.

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

Не могу, в Java операторы есть для Integer, Float, первый без точки, второй с потерей точности

Не очень понял претензии - если тебе нужен объект как переменная то есть и Long и Double - первый длинный, второй точный
Если ты хочешь примитивы то есть long, int, float, double и тп. - это чисто классические примитивные переменные как в коболе или си.
У Явы с примитивами есть ряд вроде бы проблем:

  • из коробки нет беззнаковых переменных
  • нельзя жонглировать длиной примитива - есть байт, есть инт, по середине нет 16ти битных, например
  • нельзя взять и скопировать память куском из объекта в объект сделав независимый клон объекта по аналогии с мемкопи структуры Однако (с) в реальном мире Явы беззнак лютая редкость и 16бит регистры не существуют (т.е. один фиг 16бит займет нативные для системы 32 бита минимум), а вот клонирование объектов - да, боль (надо либо пробежаться по всем филдам скопировав их по очереди, и кстати тут геттеры подсобят особенно если дробить синхронизацию в многопотоке, либо пробежать рефлексией)

Ага, выше еще про генератор IDE написали

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

Причем сторонние инструменты еще могут быть у каждого проекта свои

Инструменты в теории могут быть разными (хотя это просто генератор шести строк с заменой имени переменной 😁) но для г/с результат типизирован

Да, обычно изменение начинают с полного пересоздания дерева наследования, потому что оно нерасширяемо

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

если у тебя переменная структуры меняется в разных местах по коду

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

Ушел на хоккей, вечером может допишу 😁

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

Не очень понял претензии - если тебе нужен объект как переменная то есть и Long и Double - первый длинный, второй точный

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

нельзя жонглировать длиной примитива - есть байт, есть инт, по середине нет 16ти битных, например

О чем ты говоришь, есть же short.

и 16бит регистры не существуют (т.е. один фиг 16бит займет нативные для системы 32 бита минимум)

Надеюсь ты это не из бредогенератора копируешь. Есть регистры ax, bx, cx, ... У тебя очень странная информация... Даже интересно стало, как ты пришел к такому мнению о 16 битах.

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

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

Ну оно просто нечитаемое. Я, например, не понимаю, зачем в 2025 году писать простыни на несколько экранов вида:

class Foo {
  private Integer a;
  private Integer b;

  public Integer getA() {
    return a;
  }
 
  public Integer setA(newA) {
     a = newA;
  }
}

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

Ну неужели реально нельзя было придумать ничего лучше?

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

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

Но я прям действительно не могу понять людей, которые говорят, что им нравится Java. У этих людей наверное дома везде прямые углы.

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

Chiffchaff
()