Системное программирование, какой язык программирования выбрать?
Здравствуйте, подскажите, пожалуйста, какой язык программирования больше подходит для системного программирования? Планируется писать простенькие (на мой взгляд) утилиты, для себя.
Программированием никогда не занимался, поэтому хотелось бы получить развернутый ответ, с чего лучше начать и что изучать, чтобы было полегче, заранее благодарю.
Прошу прощения — не указал, что утилиты будут писаться только под ОС Windows.
P.S. Прошу прощения, если этот вопрос уже где-то обсуждался. Я честно пользовался поиском и видел вопросы о выборе языков, прямого вопроса, похожего на мой, я не заметил.
Ну стоп, системное программирование и «утилитки для себя» разные понятия. Системное — это С и С++ — низкоуровневые штуки.
Для утилиток, в последнее время, стал популярным Го. Весная классика — питон. В мастдайке бывает пишут небольшие скрипты на c#.
Смотря какого класса утилиты и операционка. Еще будет зависеть от необходимости установки доп. софта, требований к кросплатформенности и прочего.
stillses: Допустимость установки .NET Runtime, Python? Если только статически слинкованный EXE допустим — С/C++
vilgeforce: В принципе все ровно что ставить и чем пользоваться, я только начинаю и ожидаю что нибудь полегче, не хочется разочаровывать себя на начальном этапе изучения.
stillses: Python или C/C++. Си (или плюсы) лучше в плане большей близости к потрохам системы: придется учить WinAPI и понимать как винда работает. Питон, пожалуй, для многих задач сильно проще. Есть еще вариант C#, но рекомендовать его не могу, ибо не люблю.
Здравствуйте, я отвечу на часть вопроса:
Программированием никогда не занимался, поэтому хотелось бы получить развернутый ответ, с чего лучше начать и что изучать, чтобы было полегче, заранее благодарю.
Писал быстро, возможны ошибки.
Или, Какие языки выбрать, что бы впоследствии без труда писать на 10-ти языках. (важно, проверно, не теряется время).
Я несколько лет обучаю языку программирования.
Наблюдал за разными людьми. Как правило выбранная тематика приводит человека к языку.
Кому-то нравятся игры, кому-то программы. кто-то хочет писать ботов и т .д.
Как правило, после начала изучения языка наступает момент, когда человек узнаёт больше о языке и ему уже хочется писать совсем другие приложения.
Это не значит, что он передумал, просто начинает понимать возможности.
Тогда и начинаются сомнения, а тот ли язык программирования выбрал и т .д.
Я думал над этим вопросом несколько лет и пришёл к такому выводу.
1. Ошибка. Нельзя выбирать узкопрофильный язык.
Нужно выбирать язык общего назначения первый для изучения. Более подходит для этого Пайтон.
Пайтон откроет дорогу к любому софту, так как содержит большое количество библиотек.
Например, можно писать сайты используя Джанго. Или можно писать графические программы, например, использую PyQt (библиотека написанная на С++, под управлением пайтон).
Можно заняться тестированием или машинным обучением (то есть делать сайты и программы умными, которые способны принимать решения сами. Все эти пакеты используют библиотеку NumPy написанную на Си. И их ряд большой.
Skipy — пакет, которые собирает в себе сборку программ, для любой сколь сложной обработки всего чего угодно.
Я надеюсь возможности понятны.
Пайтон язык с динамической типизацией. то есть пол работы делает за вас.
Изучив пайтон, вы вообще въедете в программирование и уже будете делать софт, возможно зарабатывать.
Если, вы поймёте, что вам это интересно, то можно идти дальше.
Помните я говорил в начале, что важно выбрать язык общего назначения.
Так вот второе правило, если всё-таки решите стать профессионалом высокого уровня, второй язык нужно выбрать, который лежит в основе большинства других языков.
Это язык Си.
Си довольно просто, понятный язык, очень лаконичный и быстрый.
Нужен он для того, что бы открыть дорогу ко всем другим Си подобным языкам.
По сути, например, что бы понять С++ нужно будет просмотреть только отличия.
Я к этому пришёл сам за многие годы, не так давно наткнулся на одно видео с Гарварда, меня очень порадовало, что я был прав.
Этот подход использует во многих университетах.
Почему работает эта схема?
1. Пайтон, как язык общего назначения, даст вам познакомится с разным программным обеспечением.
Вы разберётесь, что вы хотите не выходя за рамки языка. Я говорю именно о времени, так как его потеря слишком дорого обходится.
2. Вы познакомитесь с парадигмами, которые есть в каждом языке, тип объекта (например список, строка и т .д).
Вы познакомитесь с переменными. с операциями над объектами и вам станет понятно, что есть язык изнутри.
Объясню проще. Каждый день мы свою голову используем, как компьютер.
Например, жена послала в магазин, так как собралась варить борщ.
Как правило большинство людей записывают, купить свеклу, морковь и т .д.
То есть в голове вы быстро расставили все действия.
Пойти в магазин. Достать список, прочитать, найти прилавки с продуктами, положить в карзину, оплатить, принести домой. отдать жене.
В вашей голове прошло много операций.
Тоже самое и в компьютере, только компьютеру нужно объяснить.
Например, если б мы писали программу. похода в магазин, то нам бы понадобилось нечто что способно объяснить компьютеру, что делать.
Именно, для этого и были придуманы языки программирования.
Часто говорю, своим ученикам, что каждый уже программист, так как совершает некие действия, каждый день.
Для программы был тот же список, вернее тип данных, или тип объекта, который и называется список.
Просто в язык он обозначается, например, в пайтон двумя квадратными скобками [‘свекла’, ‘морковь’]
Обратите внимание, язык программирование, как правило уже придуман под нужны людей.
В список можно добавить что угодно, например соль.
Это область называется операции над объектами.
Если в голове мы быстро просчитали, подошли к прилавку, протянули руку и положили, например морковь в корзину.
То, компьютеру нужно объяснить. То есть мы понимаем. что нужно добавить ту же морковь в корзину, но компьтео поймёт только свою команду, например добавить в пайтон звучало бы add.
Тогда вернусь к выше утверждениям.
Так вот Пайтон даст возможность начать писать всё что угодно, программы. игры, программы под андроид, сайты.
Если вам кто-то скажет (повторюсь), что пайтон медленный, не верьте.
Вы пользуетесь Ютуб? Так вот в большинстве он написан на пайтон. (источник М. Лутц).
Второе, как я говорил ранее, пайтон имеет огромное количество библиотек, к примеру, возьмём PyQt, написание графических программ. Сама библиотека написана на С++ (самый быстрый язык на сегодня). А управляем мы при помощи Пайтон.
Суть программирования проста. Взял виджет, в котором уже заложена много действий и программа готова.
Но есть ещё одна важная вещь, которая вам нужна.
До начала программирования у вас есть только желание, но остаются внутри вопросы, а какой язык выбрать, потом сомнения, а тот ли язык выбран??
Именно для этого и важно взять первый пайтон. Это будет уже точно тот язык, потому что приведёт вас к пониманию, а что собственно вы будете программировать.
После написания приложений на пайтон, примерно через 1-1,5 года, вы начнёте понимать себя самого, то есть понимать, что вы вообще хотите.
У вас начнут проявляться реальные конкретные желания.
То есть вы точно например будете понимать, что вы будет писать сайты. вам больше чем достаточно будет Фреймворка Джанго.
Здесь остановлюсь.
Связка Джанго пайтон очень опасный подход.
так как Джанго это настолько большой мир, что увлекаясь им, человек начинает обретать, такую склонность, как фреймворко зависимость. Что это такое?
Человек начинает терять способность писать на пайтон, так как Джанго это полностью автономный фреймфорк имеет свои модули, классы, архитектуру и структуру.
И начинает забываться сам пайтон.
Важно. Изучать например Джанго и PyQt. В чём суть?
Обязательно изучать то, что будет вас развивать в чистом пайтон. Я рекомендую android, так как не только полезно, но и перспективно.
Кстати, попутно отвечу на вопрос, нужно ли изучать пайтон, для Джанго?
Да нужно. Что нужно изучать? По минимуму типы объектов и начальное понимание ООП.
Типы объектов нужны, чтобы по минимуму не терять время.
Например, я наблюдал как новичок неделю боролся. а потом заявил, что не поставил одинарную кавычку.
Если б он изучил типы объектов, то сразу бы увидел, что в фрагменте кода, строки (тип объекта), они обозначаются одинарными или двойными кавычками.
Второе, не будет понятна справка джанго, потому что там объясняется именно типами данных.
И наконец закончу. так как уже несколько раз подвожу вк Си, но всё откладываю.
К тому времени, как вы будете писать на пайтон, у вас будет понимание что вы хотите.
Поэтому следующий язык программирования вы будете выбирать уже осознано.
Что бы не прогадать после пайтон нужно изучить Си.
Так как такие языки. как PHP, Джава. С++, Си шарп и многие другие имею в своей основе Си подобный синтаксис.
Само изучение следующего Языка это просто просмотр и сразу применение отличий.
Вот так изучение всего двух языков даст выход к десятку языков.
Повторяю, важное в этом подходе — это прогресс без потери времени.
Начать можно с просмотра бесплатного курса,
методика моментально понимания python.
Прочитайте на картинке, что это
Выше рассказывал процесс похода в магазин. И не просто так. Многие не понимают, что язык придуман для облегчения жизни. (вот что написала девушка Анна, как она выразилась это от неё ускользало. ).
А ведь непонимание этого простого момента не даёт выучить язык большинсту людей. У них разлад в голове, язык сам по себе, а мышление изучающего само по себе. И человек начинает думать, а как же мыслить, как программист, в то время. как он уже мыслит, как программист.
Я высказал своё мнение, принимать решение вам.
Я показал вам многие факторы. которые вы ранее не учитывали..
Но по крайне мере, для меня это работает.
Надеюсь статья получилась простой и всеобъемлющей.
Ещё одна деталь.
Важно сделать язык частью жизни.
Как происходит понимание языка с ноля, до промышленного программирования? (пояснил здесь)
Linux. Системное программирование.
Данная книга рассказывает о системном программировании в Linux. Системное программирование — это практика написания системного ПО, низкоуровневый код которого взаимодействует непосредственно с ядром и основными системными библиотеками. Иными словами, речь далее пойдет в основном о системных вызовах Linux и низкоуровневых функциях, в частности тех, которые определены в библиотеке C. Есть немало пособий, посвященных системному программированию для UNIX-систем, но вы почти не найдете таких, которые рассматривают данную тему достаточно подробно и фокусируются именно на Linux. Еще меньше подобных книгучитывают новейшие релизы Linux и продвинутые интерфейсы, ориентированные исключительно на Linux. Эта книга не только лишена всех перечисленных недостатков, но и обладает важным достоинством: дело в том, что я написал массу кода для Linux, как для ядра, так и для системных программ, расположенных непосредственно «над ядром». На самом деле я реализовал на практике ряд системных вызовов и других функций, описанных далее. Соответственно книга содержит богатый материал, рассказывая не только о том, как должны работать системные интерфейсы, но и о том, как они действительно работают и как вы сможете использовать их с максимальной эффективностью. Таким образом, данная книга одновременно является и руководством по системному программированию для Linux, и справочным пособием, описывающим системные вызовы Linux, и подробным повествованием о том, как создавать более интеллектуальный и быстрый код. Текст написан простым, доступным языком. Независимо от того, является ли создание системного кода вашей основной работой, эта книга научит полезным приемам, которые помогут вам стать по-настоящему высокопрофессиональным программистом.