LINUX.ORG.RU

Обучение программированию — начало

 ,


0

1

В программировании интересуют (планирую с этих областях программировать): ядро «Linux» (модули, подсистемы), СПО и open source, написание разного кода под платформу x86, корпоративные серверы. Скорее всего, основными для меня будут языки C и C++. С чем точно не буду связываться — с вебом, десктопными программами для обычных юзеров и графическими интерфейсами. Также не буду связываться с мастдайкой.

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

В школе получены — вместо минимального навыка программирования — Ворд, Эксель, графические редакторы, всякая бухгалтерия и лекции по всякой ИТ-бюрократии. Даже Basic или Pascal не было.

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

Как правильно начать изучение алгоритмов и с какого языка начинать? Алгоритмы изучать нужно по книгам? Если да, в какой книге доступно излагается? А язык? С Васика стоит начинать линуксоиду? Может сразу с Паскаля? На что еще стоит обратить внимание и изучить?

Deleted

На что еще стоит обратить внимание и изучить?

Всё через жопу у тебя. Ты намерен кодить ядро с GUI на basic-е. Парень, это перебор.

Начать надо с простого Си, без каких-то там GUI, изучать написание текстобрабатывающих тулз.

А потом всё остальное.

Deleted ()
Ответ на: комментарий от Deleted

кодить ядро с GUI на basic-е

Ты как читаешь вообще? Я наоборот не свобираюсь с графикой связываться совсем. А про Васик спрашиваю стоит ли для знакомства с программированием использовать.

Deleted ()

1. реализовал . 2. по нужде профиль и замещение горячих мест годными алго.

Как правильно начать изучение алгоритмов

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

зы. Excel очень мощен ибо тулить в нём(во всяком спридшете) прототипы ...

anonymous ()
Ответ на: комментарий от vladimir_vist

Начни с ассемблера, лучше под DOS, или вообще без ОС

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

annulen ★★★★★ ()
Ответ на: комментарий от vladimir_vist

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

annulen ★★★★★ ()
Ответ на: комментарий от vladimir_vist

почему программа «идет сверху-вниз» а не вся сразу одновременно

Это какой-то странный вопрос. Текст мы читаем сверху вниз, предложение за предложением. Более актуален такой вопрос при изучении какого-нибудь Verilog'а, когда надо свыкнуться с мыслью, что программа выполняется не сверху-вниз, а вся сразу одновременно

annulen ★★★★★ ()
Ответ на: комментарий от vladimir_vist

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

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

annulen ★★★★★ ()

вместо минимального навыка программирования — Ворд, Эксель

4.2. Excel даёт полезный навык функционального программирования, в то время как Basic с Pascal выращивают императивщиков, умеющих только строгать кучу хоть как-то работающей лапши. А ещё там макросы есть, осиль их наконец.

xvostostrel ()

Exсel - хорошо, поможет по жизни.

Для обучения - для начала поступить в ВУЗ на соответствующую специальность - там всё дадут. Самостоятельно - если на паскале, то можно сразу алгоритмы, если на Си - то начать с книги K&R, возможно поискать что-нибудь по современному Си. Алгоритмы хорошо по Кормену учить. Если начали с паскаля, то со временем (не сразу) переходить а Си.

alexanius ()
Ответ на: комментарий от annulen

для высокоуровневого программирования абсолютно не требуется, по крайней мере на новичковом этапе

а потом получаем: «не понимаю смысла указателей! помогите решить лабораторку!!!11рас». нет уж пусть начинает с асма.

anonymous ()
Ответ на: комментарий от anonymous

если понимаешь массивы - то и указатели. ибо указатели це индексы память-массива.

т.е когда чел не уяснил указатели эквивалентно что чел не умеет в индексы массива.

anonymous ()

Хочешь писать на С и С++ — их и учи. Нафига тебе Паскаль и тем более Бейсик? Паскаль — это примерно та же самая фигня, что и Си, только никому сейчас не нужная. Синтаксис слегка отличается (не фатально, так как есть общий предок) и макропроцессора нет, зато есть модули. Если к реальному программированию переходить, то разница заключается в «^» вместо «*» и тех самых пресловутых begin-end.

Бейсик сейчас вообще применяется, в основном, как внутренний язык скриптования в различном софте. Надо будет — на уровне, достаточном для написания какого-нибудь макроса, освоишь за полчасика. На полном серьёзе изучать какой-нибудь VB.NET в 2019 году, не имея конкретной задачи — дикий бред.

Alden ★★ ()
Ответ на: комментарий от Alden

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

т.е Паскаль тут можно на схему заменить.

а ваще ща Питон ибо так!

anonymous ()

Готов провести обучение C и «стандартным» алгоритмам на коммерческой основе по индивидуальной программе. Потом (или даже параллельно) - Python. Формат - видеозвонки, совместная работа и немного домашних заданий. Контакты см. в профиле.

Начинать с C можно, что бы там ни говорили противники :)

AEP ★★★★★ ()

Касательно языков программирования

TL;DR: Pascal -> C -> С++ -> {Assembler, Scala/Haskell, Python, Java}

Начинать нужно с Паскаля. Там есть основные механизмы, которые нужны везде: типизация, процедуры/функции, структуры, указатели и т. п. Этот язык специально создавался для обучения. И при этом, он достаточно мощный, чтобы писать полноценные программы: тот же Total Commander написан на Паскале.

Си. С Си не рекомендую начинать, так как может быть поначалу сложновато: там много низкоуровневой специфики, которую нужно держать в голове. Но, когда почувствуешь себя комфортно с Паскалем, нужно обязательно переходить на Си. Это основа основ и стандарт де-факто в opensouce (да и не только).

После С имеет смысл изучить С++: ООП, исключения, шаблоны, лямбды и т. п.

Ассемблер - если хочешь отбить себе охоту от программирования, начинай с него. Это марсианский язык. Но, после Си имеет смысл написать парочку программ на ассемблере. Дело в том, что этот язык отражает логику того, как по-настоящему работает компьютер. После него очень многие вещи, которые казались странными до этого, станут на свои места. Да, и когда в программе хочется использовать какие-то фичи процессора (MMX, SSE, AVX и т. п.) в программу на Си делаются ассемблерные вставки. Так что практическое применение ассемблер имеет, и ты с ним вполне возможно столкнешься.

Я хотел порекомендовать начитать с Python - простой как Паскаль, в отличии от последнего имеет широкой практическое применение сегодня. Python - тоже must-have с точки зрения обучения (но после Си). Для меня это язык на котором можно что-то быстро набросать на коленке - небольшой скрипт или сделать proof of concept,- чтобы потом, если нужно, переписать на Си или на чем-то еще. Но в нем не хватает одной базовой фичи: типизации. Если не знать что такое типы, как с ними работать, чем они полезны, то программистом тебя назвать нельзя. Кстати, в python сейчас активно тащат работу с типами, пусть не полноценную, просто хоть в каком-то виде.

С Basic не имеет смысла начинать. Используется редко, преимуществ перед Паскалем не имеет. Изначально Basic был ну совсем примитивен. Тем, кто по каким-то причинам хотел развивать этот язык - а из таких я знаю только компанию Микрософт - пришлось активно тащить хоть какие-то базовые фичи из других языков. Получается достаточно костыльно.

Lua - очень нишевый язык. Притом по сложности от близок к Си, но со своими странностями. Будешь знать Си и ООП - освоишь Lua за полчаса.

JavaScript, PHP - только если будет программировать под WEB. Опять же, зная С/С++, освоить синтаксис этих языков не составит труда.

Java - это must-have в Enterprise'е. Если хочешь именно работать программистом, то имеет смысл освоить. Но после C++. Небольшое обучения понадобится: там есть свои фишки.

Функциональное программирование - Scala, Haskell. Нужно хоть немного попробовать, чтобы понять что это такое. Там нужно мозг немного по-другому заставить думать. Зато потом придет понимание где уместней использовать приемы ФП; во многих языках есть конструкции ФП.

golang, rust и т. п. - имеет смысл попробовать, но после C++. Просто чтобы, возможно найти для себя «комфортный» язык. Распространение пока у них не большое, но перспективы хорошие.

Kroz ★★★★★ ()
Ответ на: Касательно языков программирования от Kroz

Изначально Basic был ну совсем примитивен. Тем, кто по каким-то причинам хотел развивать этот язык - а из таких я знаю только компанию Микрософт - пришлось активно тащить хоть какие-то базовые фичи из других языков. Получается достаточно костыльно.

Изначально, это когда? В 60-х? Возьмём, например, for each. В мс-бейсиках это присутствует с лохматых 90-х, в си++, насколько я понимаю, с 2011, в жабе с 2004. Или elseif. Ткнулся тут на днях править js-скрипт, а там нет такого оператора.

В общем, твоё заявление не более чем домыслы.

rechnick ()

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

Царь?

С Васика стоит начинать линуксоиду? Может сразу с Паскаля?

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

P.S. Вот Kroz хорошо расписал. Я именно из-за типизации советую начать с паскаля, а не питона. Потом можно изучить C, а потом и C++.

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 1)

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

anonymous_sama ★★★★★ ()
Ответ на: комментарий от hobbit

P.S. Вот Kroz хорошо расписал. Я именно из-за типизации советую начать с паскаля, а не питона. Потом можно изучить C, а потом и C++.

Я могу судить только по бейсику. А по нему он написал плохо. «Используется редко, преимуществ перед Паскалем не имеет». Перед каким паскалем он не имеет преимущества? Разве что перед delphi и то, кое в чём. А так у него масса преимуществ на венде: Adobe, Corel, AutoCAD, SolidWorks* скриптуются через бейсик. Сама система легко управляется через бейсик. И при этом не надо ничего ставить — достаточно открыть блокнот.

------------ *в русской и французской википедии есть информация, что сам Solid написан в VB. Только что посмотрел — страшно удивлён.

rechnick ()
Ответ на: комментарий от rechnick

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

Да, на VBA я когда-то сам что-то кропал, когда надо было с документацией что-то упростить. Но это из другой оперы.

hobbit ★★★★★ ()
Ответ на: комментарий от hobbit

Фиг его знает. Если чел хочет пилить ядро, то логичней посмотреть какими инструментами его пилят и вопросы отпадут сами собой. Ну а если изучать «сферическое программирование в вакууме», то бейсик как минимум не хуже других, а в чём-то даже лучше — в разы меньше заморочек и внятный синтаксис. Хотя опять же это лишь для венды.

Для профессии я бейсик сам не посоветую, особенно если речь про Россию.

rechnick ()
Ответ на: Касательно языков программирования от Kroz

Благодарю

Иду подобным путём: Pascal, как ознакомление с принципами, NASM - освежить память, как же процессор работает, ну и Си. Пока остановился на Си. Но оглядываясь на рынок труда, нужно будет Хотя бы познакомится с языком C++. Не хотелось бы в дебри ООП влазить, но работодатели думают иначе. Далее планирую освоить SQL. Пока такой план.

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

Благодарю за советы.

le_legioner ★★ ()

В программировании интересуют (планирую с этих областях программировать): ядро «Linux» (модули, подсистемы), СПО и open source, написание разного кода под платформу x86, корпоративные серверы.

это насколько же надо разочароваться в жизни?

anonymous ()
Ответ на: Благодарю от le_legioner

Не хотелось бы в дебри ООП влазить

ООП - это не дебри. Дебри будут с метапрограммированием (шаблоны и т. п.), многопоточностью и др, особенно если не просто теорию прочитать, а попытаться применить на практике. Я попробовал как-то многопоточность, интересные результаты получил, а ведь это был нулевой уровень (даже не первый): Мне всегда казалось, что несколько потоков должны грузить все ядра процессора...

Хотя бы познакомится с языком C++

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

Kroz ★★★★★ ()

Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации

Эдсгер Вибе Дейкстра

Avial ★★★★ ()

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

jo_b1ack ★★★ ()
Ответ на: комментарий от anonymous_sama

Java - зло. Лучше C# + матан, потом плавно переползать на Python+Java. Но предварительное знакомство с C или C++ обязательно, иначе код правильный с точки зрения человека, но такая лагучая дичь получается (копируют, когда можно указатель дать и т.д.).

peregrine ★★★★★ ()