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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ладно когда я учился в вузе, там хоть делфи был, сейчас незнаю вообще он используется где-нет.:(
это для вас проблемы нету, для меня. а если вы попытаетесь объяснить указатели, и их работу в памяти, я вам не завидую. )))
паскаль применяется почти во всей промышленности, где работают чпу и роботы. не си, не питон, а именно паскаль и делфи.
а по поводу привыкания... ну что тут добавить. как вы будите писать на джава, на РНР? ведь привыкните к Си... )))))
я то же всё это проходил. не рекомендую с Си начинать. уж лучше с питона. си это когда уже есть хоть какойто опыт и понимание в программировании.
 
Это не так.

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

Я просто проходил всё это, не рекомендую паскаль...
при чём тут низкоуровневое или высокоуровневое? начинающиму в первую очередь нужно понять что такое программирование, и как всё это работает. паскаль как раз и разрабатывался для этого. а вот уже потом, когда есть понимание, можно переходить на низкоуровневые, высокоуровневые, машинные, кому какие требуются. переходить с языка на язык не так сложно, как вы это рисуете. если конечно понимать что ты делаешь. хороший специалист владеет несколькими языками, и не путается в них.
 
а по поводу привыкания... ну что тут добавить. как вы будите писать на джава, на РНР?
Вы что-то всё смешали.)

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

Почему так ?

Это совсем другая область и там нужны совсем другие скилы...

Устройство указателей, спокойно объясню и на си если нужно будет, не вижу причин использовать для этого паскаль.

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

Да и приведенные вами языки Java и PHP у них синтаксис кстати си подобный, это ещё один повод не изучать этот паскаль.

Уж лучше-да, тогда учить сразу питон...
 
У меня стаж работы более 15 лет разработки на си и каких-то низкоуровневых вещей и я не смогу писать не на Java не на PHP.
Вернее смогу, но это уже будет уровень джуна, если без помощи нейросетей конечно...
посчитать сможете? свой первый пзу, я зашил в 1986 году. потом был бейсик, потом ассемблер, и так далее.
способность писать только на одном языке, это и есть уровень джуна. )))) мастер и отличается от дилетанта, тем, что способен читать и писать на нескольких языках. кроме того речь идёт об использовании языков в ИБ, а не о разработки на одном языке. а вот как раз в ИБ и нужно знание нескольких языков. а это не джуны с одним, а спецы с несколькими языками. )))
 
Да мы ушли куда-то непонятно, вопрос был про паскаль, вы так и не убедили что на нем лучше изучать программирование, не вижу проблем изучать это на си.

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

Нельзя быть экспертом во всем, я про это хотел сказать.

Синтаксис любого языка можно изучить за пару дней да, а писать нет...

В ИБ в зависимости от сферы деятельности нужны специфичные знания, как и в разработки.

Без конкретики это просто набор слов, просто знания синтаксиса конкретного языка недостоточно...)

Разумеется мало кто пишет только на одном языке, например я пишу не только на си, но и на питоне, баш сриптах, немного на плюсах...

Но повторюсь это всего-лишь инструменты, но у каждого языка своя специфика...

Поэтому изучать паскаль, с его линейной структурой кода, что-бы потом перейти на си, это не продуктивно и не правильно...:(
 
вопрос был не про паскаль.
Ты за какой путь и почему: сначала Python, сначала C или оба параллельно?
это вы про разработку начали, а не про ИБ.