Короткий ответ заключается в том, что глобальные переменные исторически были источником тонких ошибок. Но затем (надевая на меня функциональную голову программиста) все переменные были источниками тонких ошибок.
По сути, глобальная переменная означает, что вы не можете смотреть на кусок кода, используя значение переменной, и знать, что он собирается делать, не зная, что делал каждый другой фрагмент кода, устанавливающий значение этой переменной в прошлом.
Должен знать :
1) C (системное программирование, понимание архитектуры машины)
2) Perl, Python или Ruby (повседневные практические задачи)
3) Java, C # или C ++ (ООП, и в наши дни очень важно получить работу)
Действительно важно:
1) Haskell или ML (функциональное программирование; меняет ваш образ мышления)
2) Lisp или Scheme (мощь макросов)
Хорошие дополнения:
1) Forth (очень низкоуровневая, явная работа со стеком + удовольствие от написания собственного интерпретатора)
2) Языки ассемблера (знаете, как вы CPU работает)
3) Erlang (параллельная обработка)
4) Prolog (логическое программирование)
5) Smalltalk (истинное ООП и настоящая интерактивная разработка)
C - системное программирование низкого уровня плюс понимание общих концепций того, как обрабатывается память, стек, фрейм стека, куча и так далее. Они полезны для понимания языков более высокого уровня
C ++ - в основном библиотеки std (разделение общих алгоритмов и контейнеров), шаблонов, пространств имен, но также и концепций объектно-ориентированного программирования. Мета-программирование шаблонов даст вам совершенно другой взгляд на написание программного обеспечения, это выполнение во время компиляции по сравнению с выполнением во время выполнения. Наследование шаблонов (статический или динамический полиморфизм).
Python - система динамических типов, понимание списков - функциональное программирование (?), Без управления памятью для разработчика, пробелы для отступов
Objective-C - отправка сообщений (может отправляться в ноль ), система динамических типов (в том числе статическая), позднее связывание, объектно-ориентированные концепции
Пока я просканировал ответы, я удивлен, что не увидел ни одного упоминания о ActionScript.
Я думаю, что если вы выучите немного C / C ++, а затем немного Java, то это должно подготовить вас практически ко всем приличным языкам. Я предпочитаю видеть свой код в действии, и я считаю, что ActionScript 3 (а не 2 или 1) вместе с Flex (который представляет собой MXML) отлично подходят для быстрой демонстрации визуальных концепций.
Итак, C & Java помогает изучить синтаксис большинства языков. ActionScript 3 (очень похож на синтаксис java) и MXML для очень быстрого визуального отображения кода.
Многое уже упоминалось, но я бы определенно добавил C ++ (уже сделано) по следующей причине:
C ++ для обучения использованию указателей и получения основная идея о них.
Хотя есть дискуссия о том, является ли c ++ «лучшим» языком (все зависит от того, что вы действительно хотите сделать), никогда не помешает понять указатели, на всякий случай, если они вам когда-нибудь понадобятся.
Псевдокод для чтения / записи документации. : p
Я думаю, что знание C / C ++ или любого другого языка низкого уровня поможет вам понять влияние того, как работают управляемые языки / языки сценариев. Такие как указатели демистифицируют ссылки на переменные.
Вы должны знать язык сценариев, чтобы вы могли быстрее создавать прототипы своих приложений.
Возможно, python / ruby / perl. Groovy также является альтернативой, если вы парень Java, которому нравятся его библиотеки Java.
Если вы хотите понять компьютеры и лежащее в их основе оборудование, C - самый важный язык, обычно называемый lingua franca компьютеров. Подкаст Stackoverflow имеет тенденцию освещать это не реже раз в неделю .
Кажется, на этот вопрос достаточно ответов, поэтому я просто оставлю все как есть.
Найдите набор различных языков программирования:
На самом деле не имеет значения, какие из них вы выберете, но что вы выберете из каждая «категория».
Я бы сел на C / C ++, потому что он устанавливает набор основ для выделения других языков, используемых во всем мире.
Лично я изучил Java / JavaScript-> VB (к счастью, короткий курс) - > C # -> C ++, плюс немного PHP и Perl. Лучшей частью этой линии был C #, а затем переход на C ++.
Паскаль или Бейсик для начала и освоения основ процедурного программирования.
В школе мы изучали Хаскель для функционального программирования.
А затем следует попробовать ассемблер или Си для более глубокого понимания и понимания. Java для ООП.
У A нет аргументов в пользу этого - это только мой вкус и то, что я пробовал.
Для веб-программирования: PHP, ANSI-SQL, javascript.
Некоторые люди могут утверждать, что HTML и CSS не являются языками программирования. Но они необходимы для разработки веб-приложений.
Для разработки настольных приложений - C ++ с Qt Framework. Qt дает C ++ дополнительную «кроссплатформенную» шипу.
Вы уже упомянули два, вот еще несколько:
Это хороший вопрос. Я знаю, что многие люди, в том числе и я, застревают в колее, где мы просто штампуем код, как если бы производили гамбургеры в McDonald's. Кодирование становится слишком механическим - мы понимаем, как добиться результата, но часто забываем, почему это делается за кулисами.
В моем мире больше всего меня научил C ++ / C / ObjectiveC, хотя я пишите C # каждый день на работе.
По большей части изучение C ++ помогло мне узнать об управлении памятью, о том, как различные объекты хранятся в памяти, и т. д. - настоящая наука о программировании. Что действительно открыло мне глаза, так это курс «Парадигмы программирования», предлагаемый в Стэндфорде, который можно выйти из iTunes и, я думаю, YouTube.
Limbo - язык программирования с параллелизмом и каналами, в который должен был развиться C. (см. также D , еще один преемник C)
Кажется, никто больше не упоминает о каких-либо декларативных языках, поэтому вот несколько:
Prolog - декларативный язык для логического программирования
Modelica - декларативный объектно-ориентированный язык для моделирования систем.
XSLT - декларативный язык для преобразования XML.
Что касается параллелизма, вы не получите намного шире, чем язык шейдеров и связанный с ним OpenCL - обычно 512 процессоров параллельно на настольном ПК высокого класса, а не 4 процессора Erlang параллельно (хотя и с множеством запланированных процессов).
Хорошо. Я бы сказал, изучите C и javascript. Это наиболее широко используемые языки.
Возможно, вы захотите выучить Java / какой-нибудь язык .Net и / или python / ruby: они более удобны, тем не менее.
Это дает то преимущество, что все эти языки достаточно хороши разработан. Например, не изучайте PHP или C ++, потому что это беспорядок. Они широко используются, возможно, вы однажды захотите их изучить, но они могут серьезно повредить вашему разуму.
Хороший краткий список :
Может также включать
Для концепций я бы выбрал ассемблер и Java.
Первое, потому что вы должны хорошо знать, как работают машины.
Второе, потому что вы должны понимать, как оградить себя от интимных деталей того, как работают машины :-). Под этим я подразумеваю язык с богатым набором структур данных (так что на самом деле Java может быть Python, C ++ с Boost и так далее).
Лучше всего знать разнообразие. Это дает вам лучшее общее представление об искусстве программирования, а также вы можете выбрать лучший инструмент для работы.
Мой текущий список будет: -
Это не языки, а парадигмы, которые вы должны знать:
Если вы понимаете одну из этих парадигм на одном языке, легко выучить другой язык в той же парадигме. Есть еще больше полей, специально поддерживаемых языками, которые важно понимать:
Наконец-то вы всегда должны знать, что происходит под капотами, так что вам лучше взглянуть на ассемблер.
Я думаю, что три языками, которые лучше всего сочетают практичность и охват концепций программирования, были бы
На этих языках вы можете изучить низкоуровневое системное программирование, указатели и управление памятью, статическую типизацию, динамическую типизацию, высокоуровневые сценарии, программирование, управляемое событиями, объектно-ориентированное программирование, функциональное программирование.
Очевидно, вы не получите столь чистого введения в функциональное программирование, как, скажем, с Haskell,
C для понимания того, как большинство других языков (- реализации) и операционные системы реализованы
Вы должны начать с C и пройти через C ++, Java и goto WinForms, Тогда лучше перейти к .NET
Я бы сказал:
Если вы работаете в распределенных системах. , Я тоже рассмотрю возможность изучения Erlang. Это тот язык, который я рекомендую изучать, пусть даже поверхностно, только ради изучения, даже если вы никогда не используете их для написания настоящего приложения.
... И так далее.
в основном язык для создания веб-сценариев на стороне клиента.... И так далее.
в основном язык для создания веб-сценариев на стороне клиента.... И так далее.
Я бы сказал:
Если вы занимаетесь распределенными системами, я также рассмотрю возможность изучения Erlang. Это тот язык, который я рекомендую изучать, пусть даже поверхностно, только ради изучения, даже если вы никогда не используете их для написания настоящего приложения.
Если вы занимаетесь распределенными системами, я также рассмотрю возможность изучения Erlang. Это тот язык, который я рекомендую изучать, пусть даже поверхностно, только ради изучения, даже если вы никогда не используете их для написания настоящего приложения.
Если вы занимаетесь распределенными системами, я также рассмотрю возможность изучения Erlang. Это тот язык, который я рекомендую изучать, пусть даже поверхностно, только ради изучения, даже если вы никогда не используете их для написания настоящего приложения.
Это может звучать безумно, но сначала я научился программировать макросы VBScript для Windows. Я использовал шаблон, который доступен здесь http://vbscript-macro-template.blogspot.com/ , и я просто добавил к нему, а также попытался понять все, что он делает. Теперь, несколько лет спустя, я пишу свои собственные настольные приложения и приложения для баз данных.