Многие программисты сталкиваются с проблемой выбора языка для реализации своего проекта. Этот же вопрос встаёт перед школьниками в преддверии ЕГЭ по информатике. В данной статье будут рассмотрены языки Python и Java, поговорим об их плюсах и минусах, а также постараемся понять, что лучше изучать новичку.
Небольшой дисклеймер!
Прежде чем мы начнём, нужно оговорить несколько моментов. Я уважаю, признаю жизнеспособность и потенциальное развитие как Python, так и Java. Оба языка бесспорно хорошие, я лично использовал их в своих проектах. Ни в коем случае я не хочу оскорбить чувства носителей того или иного языка. В данной статье будет высказано личное мнение, основанное на моём опыте. Данный вопрос является дискуссионным, поэтому если вы с чем-то не согласны или хотите что-то дополнить, то добро пожаловать в комментарии.
Что проще?
Многие скажут, что python очевидно легче, чем java. Но давайте углубимся в детали. Наверное, главный аргумент за простоту python - упрощённый синтаксис. Действительно, это так. Программа на java где-то в 1,5 раза длиннее, чем на python. Следовательно, программисты на java в среднем пишут код дольше. Второй аргумент - динамическая типизация данных. В python не нужно объявлять тип переменных - программа самостоятельно решит как с ней работать. В java нужно ручками прописывать какой тип данных имеет каждая переменная. Исходя из этих аргументов многие считают, что python - лучший язык для начинающих программистов и всем школьникам при подготовке к ЕГЭ нужно учить python.
Но в этом вопросе есть подводные камни, о которых мало кто говорит. Упрощённый синтаксис? Давайте покажем на примере решение 5 задачи
В подробности решения вдаваться не будем - наша цель сравнить размер кода. Решение на java занимает целых 18 строк!
А вот код на python намного меньше - 8 строк. В 2 раза меньше
И это ещё не предел - вот код в 1 строчку. Вот он - триумф python
Но тут возникает другая серьёзная проблема - этот код сложно понять новичку. Тяжело в одной строке визуализировать вложенные циклы и условные операторы. Когда программа представлена в развёрнутом виде, становится всё легко, а главное - наглядно. Вторая серьёзная проблема - это поиск ошибок. Иногда программа отказывается работать, тогда программист пытается определить где конкретно закралась ошибка. Например, можно вывести какие-то промежуточные данные и проверить их. Когда программа написана в одну строчку, поиск ошибки усложняется в разы.
Оказывается, не всегда самые короткие программы - самые простые. Почему же тогда некоторые онлайн-школы предлагают своим ученикам именно такие решения? Мне кажется, это связанно с некоторой слабостью учеников. Шаблоны таких программ легче всего зазубрить или переписать в шпору. К сожалению, многие школьники, вместо того, чтобы разобрать логику решения и понять алгоритм, просто берут готовый шаблон, меняют числа в зависимости от условия (благо многие задания однотипны) и искренне убеждают себя, что они хорошо подготовятся. Так делать категорически нельзя! Всегда нужно понимать, написанный код: за что отвечает каждая переменная, как она ведёт себя в цикле, в какой момент программа из цикла выходит и т. д. Справедливости ради, преподаватели онлайн-школ чаще всего говорят о необходимости понимания кода (по-крайней мере те, которых я смотрел). Однако они вещают на массовую аудиторию, среди которой есть не самые прилежные ребята. Как раз для них шаблоны и пишутся, чтобы хотя бы 60-70 баллов набрали. Для более умных учеников заучивание шаблонов - это пустая трата времени, важно именно понимание алгоритма, только в этом случае можно успешно решать подавляющее большинство задач экзамена.
Далее, хочется рассмотреть следующий аргумент: динамическая типизация. Python умеет автоматически определять тип переменной, в случае с java придётся задать его самостоятельно. Но сильно ли это влияет на сложность? На самом деле нет. Для ЕГЭ нам понадобятся не так много типов данных, поэтому их будет несложно запомнить. Зато при проверке кода удобнее контролировать типизацию данных, когда она задана в явном виде. Я бы не сказал, что это очень сильно усложняет код. Правда, нужно помнить команды перевода из одного типа данных в другой (например, ранее в коде встретилась функция - Integer.parseInt(string) - она отвечает за перевод переменной string в int), но это не сложно запомнить с практикой. Главное - понимание кода
Итак, давайте подытожим: синтаксис у java немного сложнее, а код писать дольше. Зато более подробный синтаксис позволяет тратить меньше времени на поиск ошибок. Поэтому я не разделяю мнения, что java - это сложный язык, который недоступен школьникам. Я сдавал ЕГЭ именно на java и за 3 часа 55 минут успел прорешать вариант 2 раза, поэтому я бы не сказал, что писать на java очень долго. Немного практики и рука за миллисекунду будет ставить точку с запятой в конце строки - это точно не повод отказываться от изучения java и использования его на ЕГЭ
Что быстрее?
А вот тут показатель достаточно объективный и менее дискуссионный. Для опытных программистов не секрет, что python очень медленный язык программирования, медленнее java в несколько раз. В основном это связано с тем, что python является интерпретируемым языком. Это значит, что он выполняет больше работы во время выполнения кода. Например, выясняет тип переменных. (если это не делает программист, то это приходится делать программе). То есть из-за упрощённого синтаксиса программа на python работает дольше.
Но сыграет ли это большую роль на ЕГЭ. На самом деле не очень, не смотря на то, что на экзамене много задач с большими файлами, составители учитывают вариативность языков и стараются подобрать данные, которые смогут обработать все языки при оптимально написанном коде. Приятно, когда программа выполняется быстро, и это может иметь значение, когда ищешь ошибку и помногу раз перезапускаешь код. Но я бы не сказал, что это сэкономленное время будет решающим. Зато на олимпиадах, это действительно становится большим преимуществом. Поэтому, кстати на олимпиадах большинство программируют на java или на c++. Про олимпиады я планирую написать отдельную статью, я являюсь призёром одной из олимпиад РСОШ и мне есть, что рассказать, поэтому подписывайтесь на канал.
Что перспективнее?
Возможно, я кого-то удивлю, но на ЕГЭ жизнь не заканчивается. Вы пойдёте в институт, а потом на работу по специальности. По специальности же, да? Наверное, вам не хочется учить язык программирования для сдачи ЕГЭ, который в будущем вам никогда не пригодится. Например, я бы очень не советовал учить pascal в 2024 году, потому что он устарел лет 12 назад. А что на счёт java и python?
У этих языков программирования прекрасные перспективы. Оба этих языка очень востребованы на рынке. Программиста на java с радостью пригласят заниматься мобильной разработкой, а программист на python сможет получать деньги за разработку телеграмм-ботов. Конечно же, это всего лишь примеры, есть тысячи вариантов вакансий с такими навыками. Эти разработчики будут востребованы во всех направлениях it-сферы.
Но мне всё-таки кажется, что java-программист будет более приспособлен. Он с юности привык к сложному синтаксису, и ему будет легче изучить какой-нибудь другой язык, например c++. Разработчик на python будет испытывать сложности, потому что он привык к более простому синтаксису. Это не значит, что python-разработчик не сможет перейти в случае необходимости на другой язык, сможет, но не так быстро.
Вывод
Какой же можно сделать вывод из всего вышесказанного? Java является хорошей альтернативой python для решения ЕГЭ по информатике, даже если ты ещё новичок. Поэтому я бы по-крайней мере присмотрелся к этому языку программирования для сдачи экзамена.
Спасибо за прочтение статьи. Поддержите молодой канал лайком, а также не забудьте подписаться если вы интересуетесь ЕГЭ по информатике и олимпиадами. А если вы не согласны с автором или вам есть, что добавить или предложить - пишите ваши мысли в комментариях В будущем вас ждёт много контента.