Как вы думаете? Какова идеальная последовательность изучения языка программирования, которая будет охватывать большинство интенсивно используемых языков и парадигм сегодня, а также поможет понять общие основы программирования, идеи и практики? Вы можете даже предложить последовательность изучения парадигм, а не языков.
NB: Это порт вопроса, который я задал в stackoverflow и был закрыт за субъективность и спор.
programming-languages
Gulshan
источник
источник
Ответы:
Python, Lisp, C, Haskell
Предполагая, что вопрос был об идеальной последовательности обучения для новичков в программировании (поскольку у опытных программистов будет своя (вероятно, случайная) последовательность обучения), я бы предложил прочитать эссе Норвиг о том, как изучать программирование за 10 лет , а затем:
Python : Начните с динамического, высокоуровневого, функционального и функционального языка. Потому что для новичков очень важно чувствовать себя продуктивно как можно скорееи не быть отключенным инопланетным синтаксисом, отсутствием библиотек, отсутствием мультиплатформенности, отсутствием учебных ресурсов и отсутствием сообщества. Python отлично читается, имеет множество хороших библиотек (особенно научных библиотек - современный ученый / инженер должен знать, как программировать), легко запускается из большинства операционных систем, имеет множество учебных пособий и целых бесплатных книг и, как правило, удобен для пользователя. - все еще будучи достаточно мощным, чтобы расти вместе с вами, когда вы становитесь продвинутым программистом, работающим над большими проблемами. Также важно закрепить важные и полезные соглашения для начинающих: читаемость кода важна, и вы должны писать код для себя и других, чтобы они могли легко понять.
Лисп: В частности, по крайней мере, пролистайте «Структуру и интерпретацию компьютерных программ» или посмотрите видео SICP и откройте широко открытые глаза, увидев основы и выразительную мощь программирования - можно сделать так много с таким небольшим. Узнайте, как Lisp может выражать не только функциональную парадигму, но и ОО, логическую / декларативную и многое другое - например, создание новых предметно-ориентированных языков. Прочитайте PAIP Норвига, чтобы увидеть, что мастер может сделать с языком. Тогда проверьте Clojure , современный диалект Lisp, который может быть одним из Next Big Things.
C: Только потому, что это язык общения. :) Возможно, необязательно в наши дни, если вы в основном программист в определенной непрограммной области. Я нахожу это уродливым, но стоит знать о том, как оценить базовое оборудование. Пойдите с K & R , конечно.
Haskell : Чистая функциональная сила. Где нынешний Com.Sci. теория и практическая выразительная сила встречаются. Смотрите Реальный Мир Haskell .
После вышеупомянутого тура можно было бы очень хорошо разбираться в решении проблем и выражать решения в коде, и быть полностью довольным парадигмами здесь :
источник
Вот как я бы это сделал:
Python (или Ruby или Lua): интерпретируемый язык, без типов, вы можете выполнить работу в несколько строк. Огромная библиотека (я думаю, Python лучше для этого). Вы можете углубиться в алгоритмы, потому что нет отвлекающих факторов. Компиляция не требуется, просто запустите. Кроме того, с Python вы неявно учите хорошему стилю, поскольку отступы в Python являются обязательными. Вы также можете научить объектной ориентации (в Lua это большая проблема). Цель здесь - весело провести время и показать студенту, что можно сделать.
C ++ (или, может быть, Java): типизированный, быстрый язык. Если вам нужна объектная ориентация, то вы уже знаете некоторые понятия. Основная идея состоит в том, чтобы «перевести» то, что вы сделали в Python, и сделать это с новыми ограничениями (в основном, типами). Теперь, если у вас есть правильные концепции, добавление типов не является такой проблемой. Следующим шагом является более низкий уровень мышления (Java здесь не помогает) и хорошее обучение указателям . Под этим я подразумеваю объяснение адресного пространства, ЦП, ОС, чтобы вы могли начать видеть под своей программой. Скомпилированный язык вводит различие между интерпретацией и компиляцией, очень полезно объяснить, что такое машинный язык и т. Д.
Сборка : Наконец, никакой магии, просто поговорите с машиной. Есть дебаты по поводу синтаксиса Intel и GAS, это не важно. Если у вас есть MIPS, я считаю, что он лучше подходит для обучения, но я полагаю, что x86 удобнее, поскольку он более распространен (x86_64 лучше, поскольку имеет больше регистров и тонкостей). Вы просто должны устранить некоторые сложности и позволить студентам продолжить расследование, если они захотят.
(Эти первые 3 являются «глубиной». До сих пор мы шли вниз, пока вы не коснетесь дна, который, как говорится, «близок к металлу». Я думаю, что это очень важно, многие вопросы в программировании решается, когда у вас есть четкое представление о том, что происходит. Когда вы это знаете, вы можете получить дополнительные знания с уверенностью.)
Схема (или Common Lisp или Clojure): Как сказал @dukeofgaming, языки Lisp позволяют хорошо учить рекурсии (для этой Схемы лучше, поскольку не имеет явных циклов). Но я бы пошел и научил двум другим вещам: замыкания и макросы. Макросы - это то, что отличает языки Lisp от других. Лично мне не нравятся макросы Scheme, но это не так уж важно. Например, я думаю, что макросы Clojure хороши (но рекурсия в Clojure не так чиста, поскольку у JVM нет хвостовой рекурсии). Замыкания являются очень важной концепцией, когда вы их получаете, вы мгновенно «видите» Javascript. Изучив C ++, Python и Lisp, Javascript становится «тривиальным».
Haskell : Для функционального языка я не думаю, что вы можете победить Haskell. Lisp и Scheme считаются функциональными, но чтобы подчеркнуть функциональное программирование, вы должны заставить учеников мыслить без состояния. У Haskell есть и другие очень приятные вещи, такие как каррирование и сопоставление с образцом для «деструктурирования». Я немного знаю Haskell, но лаконичность кода, который вы можете написать, просто великолепна. Хорошее знание Хаскеля делает путь к пониманию Эрланга намного проще.
Далее : язык стеков. Это снова полностью нарушает вашу логику (если Лиспу и Хаскеллу было недостаточно). Я бы пошел так далеко, чтобы преподавать Джонс Форт, так как они знают сборку, и тогда вы сможете полностью понять, что происходит. (Knowing Forth открывает PostScript, например.)
(Таким образом, эти последние 3 являются широтой, о которой вы говорили. Для меня эти языки достаточно странные, что они меняют ваше мышление. По крайней мере, они помогли мне. И я думаю, что с их помощью вы понимаете достаточно парадигм для изучения нового языка очень быстро.)
При желании вы можете изучить эти:
SmallTalk : чисто объектно-ориентированный язык. Чтобы увидеть, что происходит, когда вы серьезно относитесь к объектной ориентации, языку не нужны слова «если», «для». Все является сообщением: снова большая реализация. (Теперь это станет проще для Objective-C.)
Go : (красивый) язык с акцентом на параллелизм. Я считаю, что Go очень приятный и удобный для программирования.
Пролог : еще одна парадигма программирования. Я не написал ни одного Пролога, но понимаю, что это еще один изумительный язык.
источник
Серьезно, я мог выучить BASIC, COBOL, Fortran, Forth, Pascal и Prolog в свое время, но мне никогда особо не нужно было их использовать, и я не могу понять, каким образом они повлияли на мое использование других языки, за исключением, возможно, неправильного применения парадигм из одного в другой. Мне потребовались годы, чтобы отучиться от BASIC достаточно, чтобы на самом деле написать структурированный Pascal, пару лет, чтобы прекратить писать код на Pascal на C, и еще пару лет, чтобы фактически впустить OOP, когда я начал использовать Objective-C и Java. С другой стороны, поскольку я работал (почти) исключительно на ОО-языках, я смог сконцентрироваться на улучшении своего использования ОО-языков, не пытаясь сделать их похожими на Scheme или PostScript.
источник
Трудно утверждать, что любая последовательность идеальна, но я изложу план, который я могу обосновать:
С
Обучение C требует терпения и усердия и познакомит вас с основными способами работы компьютеров с данными и покажет вам практически самый широкий набор обязанностей, которые может принять программист для работы с такой машиной.
Perl
В качестве противоядия от строгости, требуемой C, попробуйте невероятно прощающий Perl. Что заняло неделю, чтобы написать на С, вы можете написать за час на Perl. Это вводит другой вид удовольствия, которое можно найти в программировании, и показывает, как исключение определенных проблем и деталей освобождает программиста от сосредоточенности на разных вещах.
C ++ или, может быть, Java
Далее посмотрим, как сосредоточенность C на низкоуровневых и примитивных аспектах программирования служит основой для повышения уровня абстракции, отметив, какие сделки совершаются с эффективностью при продвижении вверх по абстракции. Узнайте, как формировать абстракции, которые могут сохранять эффективность вашей программы.
Обыкновенный Лисп
Это награда за предыдущий удар. Вы найдете отголоски того, что вы узнали на всех предыдущих языках, и увидите, как глупо выглядит так много предыдущих уступок при программировании на Лиспе. Препроцессор C и шаблоны C ++ подготавливают один из них, чтобы оценить макросистему Lisp. Вы вернете простоту выражения в Perl, возможности низкоуровневой оптимизации в C, возможности построения абстракций в C ++ или Java, и хорошо пройдете их все. Ни один из предыдущих трех - возможно, кроме отладчика Perl - не подготовил вас к опыту интерактивного программирования с поддержкой REPL («чтение, оценка, цикл печати»). Работа с изображениемсреда, которая изменяет отношения между вашим исходным кодом и идеей «исполняемой программы», изменит ваше представление о том, что означает создание программы.
Помимо этих четырех, изучение других стилей программирования, таких как функциональное программирование в Haskell или логическое программирование в Prolog, позволяет более всесторонне понять диапазон программирования - широкие знания, если хотите, - но в этот момент ваше время лучше обслуживается совершенствуя свое мастерство - глубокие знания - на любом языке, который вы знаете.
После того, как вы попробовали достаточно разные языки, ваше мнение улучшится, чтобы сосредоточиться на идеях, которые выходят за рамки любого из них. Это похоже на разницу между обучением водить машину своего отца и умением водить любой автомобиль: вам может не понравиться водить арендованный мини-фургон в течение нескольких дней, прекрасно зная удовольствия от вождения любимого спортивного автомобиля, но вы поймете, как им управлять, и, несомненно, больше будут уговаривать бедного зверя, чем любителя.
источник
1. Smalltalk
Первоначально разработан, по крайней мере частично, как способ использования компьютеров для обучения детей. Синтаксис достаточно прост для описания в абзаце. Как и LOGO, он иллюстрирует принцип «низкий барьер для входа, высокий потолок».
Smalltalk - это чистый ОО-язык в том смысле, что «все является объектом».
Он также учит многим функциональным методам, в частности, в своем API-интерфейсе Collection: связывание сообщений, функции более высокого порядка, отображение, уменьшение и т. Д.
Писк сообщество живое и приветливо. Вы также увидите множество обсуждений передовых методов: так же, как и сообщества lisp, в списке рассылки есть много очень опытных пользователей Smalltalker, желающих поделиться своими знаниями. (Не повредит, что в сообществе Squeak есть большое количество профессиональных педагогов.) Есть также другой список для начинающих.
2. ПРОЛОГ
Логическое программирование язык , который даст вам совершенно другой вид вычисления только о любом другом языке. Пролог также очень декларативен (но не совсем так:
!
оператор or cut может оказать существенное семантическое влияние на предикат).3. Общий Лисп
Замените Схему здесь, если хотите. Common Lisp поддерживает несколько парадигм, особенно ОО и функциональных. Он также имеет долгую историю (Лисп - второй самый старый, все еще широко используемый язык: только более старый Фортран).
4. Хаскель
(Предостережение: я только начал изучать это.) Вероятно, самый чистый функциональный язык на планете. У этого есть очень продвинутая система статического типа. Существуют удобные вступительные книги .
5. С или Delphi
Вам нужно знать, как работают компьютеры. Вы должны знать, как на самом деле работают память и процессор. Оба они традиционно "близки к металлу" и имеют сообщества, которые поощряют думать о том, как их язык компилируется в ассемблер.
Почему этот заказ?
Smalltalk очень прост в освоении, поэтому вы можете быстро начать концентрироваться на решении проблем, а не бороться с компилятором («низкий барьер для входа»). Как только вы начинаете программировать, нет никаких искусственных ограничений на то, что вы можете сделать - «высокий потолок».
Если у вас есть четкое представление о том, как работает ОО (и - при условии, что существует ОЧЕНЬ разное понимание того, что означает «ОО», - будет справедливо сказать, что ОО доминирует на рынке), переход на Пролог гарантирует, что вы не начнете думая, что ОО единственный путь. Пролог сильно отличается от большинства языков и растягивает ваши умственные мышцы, поэтому вы не начинаете думать, что знаете все.
Common Lisp, в свою очередь, является языком взрослого. У него зрелый стандарт, он десятилетиями был ведущим языковым дизайнером (вместе с Smalltalk) - все эти модные новые функции, которые только что приобрел ваш любимый язык? Скорее всего, это идеи, воплощенные в Lisp или Smalltalk. Обычный Лисп также немного бородавчат, и везде вы найдете его.
Haskell четвертый в списке, потому что (как мне сказали: я только начал изучать его) его чистота означает, что некоторые очень распространенные вещи (например, ввод / вывод) сделать труднее, чем в менее чисто функциональных языках. Ребята из Haskell также используют некоторые довольно экзотические термины (скажем, такие слова, как «катаморфизм»), и вам, вероятно, будет лучше иметь некоторый опыт программирования за поясом, прежде чем заняться этим. (Но я должен повторить, я только начал изучать это! Примите это мнение с щепоткой соли!)
И почему C / Delphi последний? Потому что если вы не работаете во встроенных системах, вам действительно не нужно учиться программированию, думая, что ручное управление памятью - это все, что есть. Сборка мусора работала достаточно хорошо для машины уровня 1980-х годов. Ваш телефон такой мощный!
Наконец, я не поместил Эрланга в приведенный выше список, хотя я действительно должен.
источник
Python. Отличное введение в программирование. Это также будет связано с любым предыдущим воздействием на программирование.
Схема. Также отличное введение в программирование. Если вы имеете дело с программистами новичками, вы, возможно, захотите научить этому первое и второе - Python. Одной из альтернатив будет сначала Python, а затем Common Lisp вместо Scheme: больше работы, но больше вознаграждения.
C. Язык низкого уровня, близкий к кремнию. Хорошо для изучения того, что может сделать компьютер. Вы можете заменить некоторую форму языка ассемблера, но C довольно близок к основам и с ним гораздо проще работать.
Пролог. В качестве альтернативы, замените любой язык общего назначения декларативного стиля, если вы можете найти тот, который вам больше нравится.
Haskell. Для системы типов и чистой функциональности, если ничего больше.
Здесь есть несколько кандидатов, так как невозможно охватить все концепции шестью языками. Common Lisp стоит изучить, хотя бы для макросистем и объектных систем (что отличается от большинства других, которые я видел). В-четвертых, Tcl и APL - все странные языки, которые достигли определенного успеха, и один из них был бы полезен, чтобы помешать студенту почувствовать, что он или она выучил все это. Эрланг был бы хорош для параллелизма.
источник
Было дано много хороших ответов, но я не видел никого, кто предлагал бы SQL. Это совершенно другое животное, нежели большинство из перечисленных, и очень важно для любого программиста, который имеет дело с базами данных.
Вы также можете рассмотреть некоторые «языки» сценариев уровня ОС, такие как Batch, grep, awk и т. Д. «Make» также может попадать в эту категорию.
Еще один язык, который вы можете рассмотреть (если он еще не полностью умер) - это COBOL. Он достаточно отличается от других процедурных языков тем, что заслуживает некоторого упоминания. Вариации C, Fortran, Basic и т. Д. Стали настолько похожими, что когда вы знакомы с одним, переход к другому не является большой проблемой, но в COBOL отсутствует множество конструкций, которые считаются само собой разумеющимися в других. (Прошло не менее 20 лет с тех пор, как я что-то сделал с COBOL, поэтому мои наблюдения могут быть недействительными в отношении этого языка.)
Возможно, вы захотите упомянуть APL только с исторической точки зрения - или позволить ему покоиться с миром. Твой выбор.
источник
Я бы предложил сначала прочитать Эрика Рэймондса «Как стать хакером», поскольку у него есть несколько очень интересных моментов о том, как начать работу, включая Лисп, который имеет понятие «код - это данные, а данные - это код».
Для программирования я бы также предложил Haskell, Prolog, SQL и ассемблер (только некоторые).
Независимо от того, что вы хотите выучить, найдите время, чтобы выучить это правильно и написать нетривиальные объемы кода. Это очень похоже на езду на велосипеде - вы не можете узнать это из книги.
источник
Первый> Что вы хотите делать, когда начинаете программировать? Научиться быть программистом игры - это не то же самое, что научиться быть программистом для бизнеса ... отличным от веб-программиста ...
Второе> Как только вы начнете учиться, хотите ли вы начать высоко и идти вниз? Или начните с низкого и продолжайте свой путь. Изучение C # (высокий уровень) сильно отличается от изучения ассемблера (низкий уровень).
Огромный выбор будет зависеть от того, что вы хотите сделать. Программирование драйвера, скорее всего, будет включать в себя C или Assembly ... Программирование веб-сайта будет на PHP, C #, asp и т. Д. ... Вы не будете касаться ассемблера для веб-программирования ... и т. Д ...
Что касается основ ... как только вы решите, ЧТО вы хотите сделать, легче выбрать язык. Я, например, стал аналитиком данных в больнице. Таким образом, мой «выбор» языков - это SQL / TSQL / DB2 для доступа к данным, C # WPF для клиентов Windows, Silverlight для веб-клиентов, некоторые RPG / CL для серверной логики IBM ...
Лично я придерживаюсь хорошей книги + создаю собственную программу для изучения языка. Мне нравится APress, и я любил читать C # 2008. Иллюстрируется при изучении C #. У них есть другие книги, которые охватывают основы как для необразованных, так и для экспертов.
источник
Для новичка нужен только один язык, после изучения второго языка он уже выходит за рамки многих конкурирующих разработчиков. Я бы выучил в следующем порядке:
Вы можете спросить "где C ++?" а как насчет X? Честно говоря, изучение нескольких языков делает пару вещей: это обогащает ваш опыт и дает возможность изучать больше языков. Список языков, которые я хорошо знаю (Java, C #, Ruby, C ++, Javascript), является объектно-ориентированным, но это в первую очередь потому, что это то, что я должен делать на работе каждый день. Список языков, с которыми я познакомился (Smalltalk, Python, Erlang, JESS, C, Assembly [Motorola 6502/6510], Go), преподал мне ценные уроки. Я могу, по крайней мере, понять, что происходит с этими языками. Я многое еще не исследовал, но вполне возможно в будущем. Также есть несколько языков разметки: HTML, XSL: FO, XSLT, CSS, XML, SGML, которым люди должны быть знакомы, если они будут каким-либо образом работать с Интернетом.
Изучив, по крайней мере, два разных языка, я действительно не думаю, что вы должны ограничивать то, что кто-то, желающий выучить, решит выбрать следующим. Обучение должно быть органичным опытом, а слишком большая структура процесса создает группу людей, которые думают точно так же. Монокультура так сказать.
источник
Большинство из этих ответов кажутся примерно одинаковыми, поэтому я собираюсь предложить другое мнение. Я долго верил, что лучшим родным языком является Tcl.
Почему? С одной стороны, это очень легко учиться. В языке не так много синтаксиса, поэтому студент может больше сосредоточиться на концепциях программирования, а не на синтаксических особенностях конкретного языка. На момент написания статьи в Tcl было ровно 12 правил, управляющих всем языком (по сравнению с одиннадцатью за последние пару десятилетий).
С другой стороны, Tcl поставляется с фантастическим встроенным языком графического интерфейса, так что вы можете получить некоторое относительно быстрое удовлетворение и изучить основы программирования, управляемого событиями.
В-третьих, это расширяемое. Хотите научить нас повторять цикл? Вы можете написать команду, которая выполняет цикл повтора, чтобы вы не только узнали, как использовать повтор ..., пока вы не узнаете, чем он отличается от цикла while, потому что вы фактически написали его сами.
Кроме того, поскольку он расширяемый, есть легкий переход к C. Вы можете изучить основы C и узнать, как: а) расширить Tcl новыми командами, написанными на другом языке, или б) научиться добавлять язык сценариев в программу, написанную на C.
Как только вы изучите Tcl и C, большинство других языков будут находиться где-то между этими двумя крайностями, и их будет относительно легко подобрать. Мой полный список с четырьмя, которые я бы преподавал после Tcl и C:
источник
Язык ассемблера, C, SQL, C #
Я знаю, скучный и старый школьник. И весь вопрос игнорирует действительно сложную часть программирования, которая заключается в решении проблем, моделировании предметной области и построении алгоритмов. Но вот почему:
вы не можете подделать свой путь через ассемблер; вы либо получите это, либо нет. компилятор не спасет вас, нет фреймворка или библиотеки, и вы не сможете спрятаться от архитектуры машины; это чистое программирование (на уровне начального сложения двух чисел)
после того, как вы написали несколько программ на ассемблере с несколькими сотнями строк, указатели и управление памятью перестали быть загадочными, и вы должны были начать замечать шаблоны в коде (if, switch, array, loop и т. д. ). С выводит эти узоры на солнечный свет и позволяет им сиять. Стандартная библиотека полезна, не будучи огромной, но не беспокойтесь о макросах / шаблонах / и т.д. на этом этапе.
Теперь перейдем к базам данных с SQL. Не переусердствуйте с хранимыми процедурами, просто изучите основы таблиц и запросов.
после того, как вы написали несколько программ на C, состоящих из нескольких сотен строк, указатели, структуры и управление памятью стали второй натурой, а процедурные конструкции стали старыми друзьями. Вы начнете замечать шаблоны высшего порядка: эти функции всегда идут с этой структурой данных, эта часть кода похожа на ту часть кода, за исключением методов X, Y и Z и так далее. Добавьте к этому ваше понимание реляционных данных, и теперь вы готовы к объектно-ориентированному языку. С массивной структурой и вообще тупой документацией. Добро пожаловать в реальный мир! Исследуйте GUI, пишите приложения для настольных компьютеров, пишите веб-сайты, пишите веб-сервисы, пишите все, что вам нравится. Иди найди работу, если ты так склонен.
Вы сейчас программист джедай? Код ниндзя? Нет , теперь вы просто компетентны. Но у вас есть прочная основа, чтобы вы могли исследовать новые блестящие забавные вещи.
источник
Вам нужны основы:
После этого это, вероятно, не имеет значения.
источник
ОК, это последний день за щедрость. И я добавляю свой ответ. Моя предложенная последовательность
C, C ++, JAVA / C #, Python / Ruby, любой другой язык (Assembly / Lisp / Prolog и т. Д.)
источник
Схема, C, C ++
Я буду предвзятым и буду использовать модель, которую мой университет использует в настоящее время для своей основной программы по компьютерным наукам. Я был против этого в течение моего первого года, но в последующие годы я благодарен за это. Модель основана на том, что не требует никакого опыта программирования, но требует умения учиться.
Схема
Мы с вами сначала учимся программированию, чем меньше волшебства, тем лучше. Язык обучения Scheme представляет четкое и разумное определение языка, действительно небольшой набор аксиом («волшебство»), которые вы можете строить и расширять. Любой, кто может понять функции в математике, может отслеживать и рассуждать программы Scheme. Начиная со Scheme, вы получаете чистый, но мощный способ думать о вычислениях, не беспокоясь о деталях языка.
C
Переход от Схемы к C является радикальным, но позволяет вам узнать об очень важном сопоставлении языков высокого уровня с языками низкого уровня. Изучение модели памяти (указатели, куча, стек и т. Д.) И того, как программы компилируются и запускаются, как указатели, стек и работа с кучей являются важными навыками. Благодаря этому низкому уровню понимания вы можете начать анализировать программы на более высоком уровне (Big O). Вы можете начать скручивать свои собственные абстрактные типы данных, играя с различными реализациями (скажем, с простой хэш-таблицей и бинарным деревом для набора).
C ++.
Изучая C и Scheme, мы начинаем видеть разные парадигмы языков программирования и то, как они могут применяться к различным задачам. Теперь вы можете подойти к самым страшным аспектам программирования: выбор и компромиссы. Выбор языка программирования может повлиять на производительность, удобочитаемость, ремонтопригодность, надежность и т. Д. Для решения проблем, превышающих то, что вы можете себе представить, этот выбор велик, но и опасен. C ++ пытается сделать для программиста как можно меньше вариантов. Изучая C ++, вы узнаете, как сделать эти компромиссы и сделать выбор самостоятельно для решения своих проблем.
Вы можете не использовать ни один из этих языков в промышленности или когда-либо снова их трогать, но процесс их изучения поможет вам понять другие языки, которые вы будете использовать. Другой аспект - вы изучаете инструменты для определенного языка. Запуск gcc через командную строку, изучение Vim, пошаговое выполнение программы с использованием GDB, создание файлов Make, проверка кода с использованием SVN, написание сценариев оболочки для автоматизации тестирования и т. Д.
Обратите внимание, что в основной учебной программе есть и другие курсы (компьютерная архитектура, структуры данных и алгоритмы, компиляторы, операционные системы и т. Д.). Так что простого изучения этих языков недостаточно, чтобы быть опытным в программировании.
источник
Переход от базового языка к высокому уровню - это путь. Таким образом, у вас все еще есть представление о том, что происходит сзади.
источник
Python. Чтобы закончить, сделайте обычное программирование. Процедурный, ОО и (в определенной степени) функционал.
Регулярные выражения. Они находятся в библиотеке Python, но это отдельный DSL.
Shell (BASH или что-то еще). "&", "|", ";" операторы для объединения процессов являются критическими и неприятными в Python.
SQL. На данный момент это лингва франка для доступа к данным.
XHTML. На данный момент это лингва франка для представления данных.
CSS.
Может быть C, если это стало необходимым.
источник
Начните близко к металлу:
Теперь проблема с таким широким подходом состоит в том, что никто не может даже дистанционно освоить эти языки без многолетнего обучения.
Если только вы не намерены обучать их «Привет, мир», что должно занять около месяца для всех 6.
источник
Почему бы не пойти прямо и изучить VB или C #. Оба, на мой взгляд, являются полными языками, начиная от новичка и заканчивая имхо.
источник