macroevolution: (anomalocaris)
[personal profile] macroevolution
Я всю жизнь программировал только на бейсике, на разных его версиях.  Так получилось. Когда писал кандидатскую, набралось очень много таблиц с данными (это были морфологические признаки морских ежей), и я задолбался обсчитывать их на калькуляторе. Поэтому быстренько освоил бейсик (тогда персональные компьютеры IBM только начали появляться, и к ним прилагался язык GW-Basic). Освоил - и сразу почувствовал себя человеком. С тех пор не переучивался, сейчас пишу все свои программки на VBA в MS Access. То есть в программировании я дилетант, но опытный. Программированием пользуюсь сейчас для имитационного моделирования эволюционных процессов в популяциях. Подумываю об одной новой модели, но понимаю, что на VBA она будет работать невыносимо медленно. Насколько я понимаю, программа, написанная почти на любом другом языке, компилируемом, будет работать в разы быстрее. Вопрос такой: какой из этих языков мне будет быстрее и проще всего освоить? Времени, сил и желания преодолевать трудности и вникать в программистские проблемы - не имеется. Мне бы этот язык просто скачать (можно купить, если не слишком дорого), освоить за пару-тройку дней - и вперед. Т.е. главное, чтобы он был максимально простым в освоении для того, кто знает бейсик, без всяких интеллектуальных "понтов", но работал хотя бы раз в 10 быстрее.

Date: 2015-01-12 12:07 am (UTC)
From: [identity profile] mifromru.livejournal.com
>Кхм. Я вообще-то С# изначально советовал. Эт раз.

Если сравнить C# с Java как для перехода с Basic, так и для использования в последующем непрофессионалом, то:
- на C# выше порог вхождения. Его реально освоить сложнее
- в C# проще накосячить, из Java убрали практически все возможности делать ошибки, которые не относятся к самому алгоритму. В C# остались те же unsigned парные типы, которые могут смешиваться в выражениях со знаковыми типами и приводить к "неожиданным" (неожиданным для написавшего код) результатам.
- "один файл с именем класса - один публичный класс на файл" как требование языка делает код Java более переносимым. Если мне потребовалось использовать какие-то классы из одного проекта в других проектах, я просто создаю maven проект для библиотеки, перетаскиваю файлы классов (и только их) без изменений в проект библиотеки, добавляю в нужные проекты в pom зависимости от новой библиотеки.
При этом мне не пришлось менять ни буквы ни в одном файле с исходным кодом, так как Java изначально мне ограничила возможность устроить из своего когда помойку, которую невозможно повторно использовать.
- Java является реально кроссплатформенной, особенно при использовании JavaFX. Да и уйти с той же Windows на тот же Mac разработчику (ну купил макбук тот же человек себе) - вообще не проблема. Уходить можно даже вместе с любимой IDE. И не париться о том, что забыли какие-то библиотеки в случае использования maven. Т.е. вообще об этом не думать. То же самое в C#?
- у Java больше комьюнити, больше библиотек (а использование maven делает их подключение к проекту вообще тривиальным - вставка нескольких строк в pom файл, даже не нужно беспокоиться о том, где взять библиотеку и куда ее на компе приткнуть)

>В джава будет не так?

В Java с этим намного лучше не только, чем в C (где выход за границу массива не контролируется), но и в C# за счет отсутствия прямоугольных массивов (в Java есть только массивы массивов, и когда вам нужно создать треугольную матрицу вы создадите треугольную матрицу, и выйдя за границы тут же получите exception со стектрейсом).

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

В случае C это совсем далеко не так (несмотря на его компилируемость), C# в целом не плох, но Java лучше
Page generated Sep. 12th, 2025 06:12 pm
Powered by Dreamwidth Studios