ОБСУЖДЕНИЕ Заметка 

Первый язык для входа в ИБ: Python или сразу C

6 ответов 327
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Python или сразу C? Начни с C или Начни с Python


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

Сторона "начни с C"
Без понимания стека, кучи и указателей ты не разберёшь ни один таск по pwn и не прочитаешь дизассемблерный листинг осмысленно. Минимальный порог: написать простой сетевой сервер на C, руками выделить и освободить память, воспроизвести переполнение буфера на учебном примере. Если это освоено, дальше реверс и эксплойты идут на порядок легче.

Сторона "начни с Python"
C бросает новичка в борьбу с сегфолтами ещё до того, как он понял, что вообще хочет ломать. Python позволяет за вечер написать сканер портов, парсер логов или скрипт для автоматизации разведки. Первая рабочая утилита через пару дней мотивирует сильнее, чем месяц отладки утечек памяти. А к C можно вернуться позже, когда станет ясно, что именно pwn и реверс интересны.

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

Ты за какой путь и почему: сначала Python, сначала C или оба параллельно?
 
Последнее редактирование модератором:
на мой взгляд, самым первым языком должен быть самый простой по синтаксису язык, но содержащий в себе и сложные компоненты. такие как указатели, стеки, и т.д. единственным подходящим для начала языком, является Pascal. синтаксис простой как у питона, при этом компилируемый, и содержит в составе указатели, как в Си.
 
  • Нравится
Реакции: delifer
1
Начнем с того-что си и питон это вообще разные языки, для разных целей...

Собственно и изучать надо в зависимости от того-чем хотите заниматься.

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

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

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

Но зато проще написать например тот-же сервер, какой-то парсер и т.д.

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

Т.е. языки дополняют друг-друга, в зависимости от задачи.
 
  • Нравится
Реакции: Глюк
1
на мой взгляд, самым первым языком должен быть самый простой по синтаксису язык, но содержащий в себе и сложные компоненты. такие как указатели, стеки, и т.д. единственным подходящим для начала языком, является Pascal. синтаксис простой как у питона, при этом компилируемый, и содержит в составе указатели, как в Си.
Вот паскаль изучать вредно.)

Я-бы начал с си, либо С++...

После паскаля будет тяжело переходить на C/C++.
 
Вот паскаль изучать вредно.)

Я-бы начал с си, либо С++...

После паскаля будет тяжело переходить на C/C++.
вот как раз с лёгкого паскаля переходить на си-языки намного проще, чем начинать с си. паскаль специально разрабатывался николусом виртом для обучения программированию. если вы научитесь программировать на паскале, то те же указатели в си для вас будут вообще не проблемой. а попробуйте объяснить новичку эти же указатели на си. в питоне такого и в помине нету. да и в других языках я такого не припомню. если научитесь писать на паскале, для вас не будет проблем ни си, ни си++, ни питон, ни баш, ни любой другой.
 
если научитесь писать на паскале, для вас не будет проблес ни си, ни си++, ни питон, ни баш, ни любой другой.
Это не так.

Паскаль синтаксически совсем отличен от си, очень тяжело будет переходить, если хотите низкоуровневое что-то, лучше сразу изучать си, С++ и т.д.

Я просто проходил всё это, не рекомендую паскаль...
 
а попробуйте объяснить новичку эти же указатели на си.
А в чем проблема ?
Указатели на самом деле не такая-уж и сложная тема, это адрес в памяти по простому, всё остальное дело опыта.

Да и си достаточно простой язык, как-раз подходит для обучения.

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

Ладно когда я учился в вузе, там хоть делфи был, сейчас незнаю вообще он используется где-нет.:(