Рубрики
Без рубрики

Почему Вы Должны Сначала Изучить Java: Часть 1, Базовый набор текста

Когда пришло время записываться на мои первые занятия в колледже, я был полностью ошеломлен цоем… Помечено как java, набор текста, преподавание, информатика.

Когда пришло время записываться на мои первые занятия в колледже, я был полностью ошеломлен выбором. Многочисленные уроки биологии, уроки испанского языка, уроки химии, но хуже всего было то, что там были итак много уроков информатики. Изучив свои варианты, я решил начать с COMP 401: Основы программирования. Как следует из названия, в нем основное внимание уделялось основам языков программирования. Такие вещи, как синтаксис, лучшие практики, но самое главное, типы данных. Когда я посещал этот курс, мой профессор в первую очередь сосредоточился на обучении этим навыкам на Java. В то время как почти каждый колледж начинает вводные занятия по программированию с изучения концепции типов данных, за последние несколько лет они сделали что-то странное; они перешли к использованию динамически типизированных языков в качестве введения студентов в языки программирования.

Давайте рассмотрим объявление новой переменной как в Python (динамически типизированной), так и в Java (статически типизированной).

Питон

new_number = 12
new_string = '12'

Ява

int new_number = 12;
String new_string = "12";

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

Новый разработчик может попытаться запустить что-то вроде:

Питон

print(new_number + new_string)
# Raises a TypeError

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

Проблема: Подумайте о строке как о предложении на английском языке. Это представлено как английское слово в памяти. Целое число представлено как математическое число, с которым вы можете выполнять операции (сложение, вычитание и т.д.). Этот пример, по сути, иллюстрирует компьютер, пытающийся добавить английскую версию “двенадцать” к математическому числу 12.

Давайте рассмотрим более сложный пример:

Питон

basic_list = [12, 5, '3', 8, '7']
sum = 0
for n in basic_list:
    sum += n
print(sum)

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

Давайте взглянем на аналогичную программу на Java:

Ява

List basic_list = Arrays.asList(12, 5, "3", 8, "7");
// The program halts here before the 
// rest of the code runs and throws and error
int sum = 0;
for (int n : basic_list) {
    sum += n;
}
System.out.println(sum);

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

Хотя разница незначительна, для нового разработчика это различие огромно. У меня было много друзей и студентов, которые приходили ко мне после получения своего первого задания по программированию, озадаченные тем, почему их новая программа не дает ожидаемых результатов. В 99% случаев проблемы с набором текста на Python являются основной причиной проблемы. Начать с безопасного, статически типизированного языка, такого как Java (хотя многие считают его устаревшим), – это правильный путь, если вы хотите, чтобы ваши ученики понимали набор текста.

Следите за обновлениями для части 2 серии, которая скоро выйдет!

Оригинал: “https://dev.to/benwoodman/why-you-should-learn-java-first-basic-typing-2ino”