JavaRush /Java блог /Архив info.javarush /Почему в CS50 в качестве основного языка программирования...
Dr-JohnZoidberg
41 уровень
Киев

Почему в CS50 в качестве основного языка программирования используется Си?

Статья из группы Архив info.javarush
Отвечает Дэвид Малан, руководитель и главный лектор курса CS50: Этот вопрос я слышу так часто, что его пора вносить в какой-то специальный FAQ! Cи «находится» максимально близко к компьютерному железу. Ближе только язык ассемблера, но он был бы слишком загадочен и неудобен для полных новичков. В Си нет никакой загадочности. Если вам нужно, чтобы что-то было где-то в памяти, вы берете и помещаете это что-то в память самостоятельно. Нужна хэш-таблица? Пожалуйста, реализуйте «ручками». Результат такого подхода в том, что к концу семестра, студенты понимают, как работают вычислительные машины начиная от самого нижнего слоя и доверху. Кроме того, Си — очень компактный язык, к середине семестра студенты знают о нем практически всё (исключая разве что объединения и функциональные указатели). Также довольно мощная штука — переход от реализации хэш-таблиц (или префиксных деревьев) в Си на одной неделе к реализации того же самого одной-единственной строкой на PHP или JavaScript уже на следующей неделе. Что классно — студент уже прекрасно понимает, что спрятано за этими однострочными абстракциями. Си также позволяет максимально рано исследовать такие темы, как переполнение буфера (и безопасности в более широком смысле), а они и сегодня очень часто лежат в основе многочисленных уязвимостей! Кроме преимуществ, у Си, конечно же, есть и масса недостатков. Этот язык позволяет получить доступ к памяти там, где лучше бы это позволено не было. И — да — хочешь хэш-таблицу — реализуй сам! Кроме того, на Си несколько сложнее выполнять первые задания в начале семестра. Скажем, с Python или Java было бы понятнее, поскольку оба этих языка полны высокоуровневых фич. Тем не менее, задания вполне решаемы. В конце концов, я считаю Cи прекрасной, пускай и довольно непростой, ступенькой к другим языкам, которые мы также рассмотрим в курсе CS50, —PHP и JavaScript, они оба синтаксически похожи на Cи. На деле, мы надеемся, что в результате этого выбора в конце семестра скажет не «я изучил Си», а «я понял, как программировать».
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ