Что самые важные языки программирования должны знать для понятий? [закрытый]

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

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

24
задан 4 revs, 2 users 100% 30 April 2012 в 08:18
поделиться

25 ответов

Должен знать :

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 (истинное ООП и настоящая интерактивная разработка)

49
ответ дан 28 November 2019 в 22:09
поделиться

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

C ++ - в основном библиотеки std (разделение общих алгоритмов и контейнеров), шаблонов, пространств имен, но также и концепций объектно-ориентированного программирования. Мета-программирование шаблонов даст вам совершенно другой взгляд на написание программного обеспечения, это выполнение во время компиляции по сравнению с выполнением во время выполнения. Наследование шаблонов (статический или динамический полиморфизм).

Python - система динамических типов, понимание списков - функциональное программирование (?), Без управления памятью для разработчика, пробелы для отступов

Objective-C - отправка сообщений (может отправляться в ноль ), система динамических типов (в том числе статическая), позднее связывание, объектно-ориентированные концепции

0
ответ дан 28 November 2019 в 22:09
поделиться

Пока я просканировал ответы, я удивлен, что не увидел ни одного упоминания о ActionScript.

Я думаю, что если вы выучите немного C / C ++, а затем немного Java, то это должно подготовить вас практически ко всем приличным языкам. Я предпочитаю видеть свой код в действии, и я считаю, что ActionScript 3 (а не 2 или 1) вместе с Flex (который представляет собой MXML) отлично подходят для быстрой демонстрации визуальных концепций.

Итак, C & Java помогает изучить синтаксис большинства языков. ActionScript 3 (очень похож на синтаксис java) и MXML для очень быстрого визуального отображения кода.

0
ответ дан 28 November 2019 в 22:09
поделиться

Многое уже упоминалось, но я бы определенно добавил C ++ (уже сделано) по следующей причине:

C ++ для обучения использованию указателей и получения основная идея о них.

Хотя есть дискуссия о том, является ли c ++ «лучшим» языком (все зависит от того, что вы действительно хотите сделать), никогда не помешает понять указатели, на всякий случай, если они вам когда-нибудь понадобятся.

0
ответ дан 28 November 2019 в 22:09
поделиться

Псевдокод для чтения / записи документации. : p

Я думаю, что знание C / C ++ или любого другого языка низкого уровня поможет вам понять влияние того, как работают управляемые языки / языки сценариев. Такие как указатели демистифицируют ссылки на переменные.

0
ответ дан 28 November 2019 в 22:09
поделиться

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

Возможно, python / ruby ​​/ perl. Groovy также является альтернативой, если вы парень Java, которому нравятся его библиотеки Java.

0
ответ дан 28 November 2019 в 22:09
поделиться

Если вы хотите понять компьютеры и лежащее в их основе оборудование, C - самый важный язык, обычно называемый lingua franca компьютеров. Подкаст Stackoverflow имеет тенденцию освещать это не реже раз в неделю .

Кажется, на этот вопрос достаточно ответов, поэтому я просто оставлю все как есть.

0
ответ дан 28 November 2019 в 22:09
поделиться

Найдите набор различных языков программирования:

  • C ++ / C # / Java и т. Д.
  • C / Assembler
  • Python, Ruby, Lua, Perl и т. Д.
  • sh, awk, sed, регулярные выражения
  • Prolog (или аналогичный)
  • Haskell / Lisp и т. Д.

На самом деле не имеет значения, какие из них вы выберете, но что вы выберете из каждая «категория».

0
ответ дан 28 November 2019 в 22:09
поделиться

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

Лично я изучил Java / JavaScript-> VB (к счастью, короткий курс) - > C # -> C ++, плюс немного PHP и Perl. Лучшей частью этой линии был C #, а затем переход на C ++.

0
ответ дан 28 November 2019 в 22:09
поделиться

Паскаль или Бейсик для начала и освоения основ процедурного программирования.

В школе мы изучали Хаскель для функционального программирования.

А затем следует попробовать ассемблер или Си для более глубокого понимания и понимания. Java для ООП.

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

0
ответ дан 28 November 2019 в 22:09
поделиться

Для веб-программирования: PHP, ANSI-SQL, javascript.

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


Для разработки настольных приложений - C ++ с Qt Framework. Qt дает C ++ дополнительную «кроссплатформенную» шипу.

0
ответ дан 28 November 2019 в 22:09
поделиться

Вы уже упомянули два, вот еще несколько:

  • Java: Java - хороший пример ООП, потому что вам НЕОБХОДИМО использовать oop, и он разработан с нуля, чтобы быть язык ООП.
  • BASIC: хотя и устарел, это хороший пример процедурных языков, и у него очень простой синтаксис.
0
ответ дан 28 November 2019 в 22:09
поделиться

Это хороший вопрос. Я знаю, что многие люди, в том числе и я, застревают в колее, где мы просто штампуем код, как если бы производили гамбургеры в McDonald's. Кодирование становится слишком механическим - мы понимаем, как добиться результата, но часто забываем, почему это делается за кулисами.

В моем мире больше всего меня научил C ++ / C / ObjectiveC, хотя я пишите C # каждый день на работе.

По большей части изучение C ++ помогло мне узнать об управлении памятью, о том, как различные объекты хранятся в памяти, и т. д. - настоящая наука о программировании. Что действительно открыло мне глаза, так это курс «Парадигмы программирования», предлагаемый в Стэндфорде, который можно выйти из iTunes и, я думаю, YouTube.

1
ответ дан 28 November 2019 в 22:09
поделиться

Limbo - язык программирования с параллелизмом и каналами, в который должен был развиться C. (см. также D , еще один преемник C)

Кажется, никто больше не упоминает о каких-либо декларативных языках, поэтому вот несколько:

Prolog - декларативный язык для логического программирования

Modelica - декларативный объектно-ориентированный язык для моделирования систем.

XSLT - декларативный язык для преобразования XML.

Что касается параллелизма, вы не получите намного шире, чем язык шейдеров и связанный с ним OpenCL - обычно 512 процессоров параллельно на настольном ПК высокого класса, а не 4 процессора Erlang параллельно (хотя и с множеством запланированных процессов).

1
ответ дан 28 November 2019 в 22:09
поделиться

Хорошо. Я бы сказал, изучите C и javascript. Это наиболее широко используемые языки.

Возможно, вы захотите выучить Java / какой-нибудь язык .Net и / или python / ruby: они более удобны, тем не менее.

Это дает то преимущество, что все эти языки достаточно хороши разработан. Например, не изучайте PHP или C ++, потому что это беспорядок. Они широко используются, возможно, вы однажды захотите их изучить, но они могут серьезно повредить вашему разуму.

1
ответ дан 28 November 2019 в 22:09
поделиться

Хороший краткий список :

  1. C для концепций машин
  2. Haskell для функционального программирования
  3. Smalltalk (или, возможно, Ruby или Simula-67) для объектно-ориентированное программирование
  4. Пролог для логического программирования
  5. Значок для поиска с возвратом и умопомрачительной обработки строк
  6. Оболочка Борна для сценариев Unix

Может также включать

  1. Схема для макросов
  2. Awk или Perl или ... для регулярных выражений
  3. FORTH для крошечного великолепия постфикса начальной загрузки: -)
2
ответ дан 28 November 2019 в 22:09
поделиться

Для концепций я бы выбрал ассемблер и Java.

Первое, потому что вы должны хорошо знать, как работают машины.

Второе, потому что вы должны понимать, как оградить себя от интимных деталей того, как работают машины :-). Под этим я подразумеваю язык с богатым набором структур данных (так что на самом деле Java может быть Python, C ++ с Boost и так далее).

1
ответ дан 28 November 2019 в 22:09
поделиться

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

Мой текущий список будет: -

  • C - программирование рядом с машиной.
  • Python - нирвана программистов.
  • Perl - на всякий случай.
  • Java - потому что он будет держать вас в работе.
  • C # - потому что он будет держать вас в работе.
  • lisp, scheme или что-то функциональное, чтобы вывести ваш мозг из колеи.
  • SQL - для управления большими наборами данных.
  • JCL, COBOL, VAX DCL, CShell VB - просто чтобы напомнить вам, насколько все может быть плохо!
3
ответ дан 28 November 2019 в 22:09
поделиться

Это не языки, а парадигмы, которые вы должны знать:

  • процедурные (например, C, Pascal)
  • объектно-ориентированные (например, Java, C ++, Smalltalk)
  • функциональные (например, Lisp, ML, Scala )

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

  • параллелизм (в Erlang или Scala)
  • декларативные шаблоны (например, в C ++ или Prolog)
  • динамические языки (например, JavaScript)

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

5
ответ дан 28 November 2019 в 22:09
поделиться

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

  • C
  • Python
  • Javascript

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

Очевидно, вы не получите столь чистого введения в функциональное программирование, как, скажем, с Haskell,

6
ответ дан 28 November 2019 в 22:09
поделиться

C для понимания того, как большинство других языков (- реализации) и операционные системы реализованы

10
ответ дан 28 November 2019 в 22:09
поделиться

Вы должны начать с C и пройти через C ++, Java и goto WinForms, Тогда лучше перейти к .NET

-1
ответ дан 28 November 2019 в 22:09
поделиться

Я бы сказал:

  • C или Ассемблер, чтобы понять, как работает процессор.
  • Smalltalk (или C #, Java, Python, Ruby и т.д.) для понимания объектно-ориентированного программирования.
  • Lisp (любой Lisp, Scheme, Common Lisp, Clojure) для понимания программирования высокого уровня, метапрограммирования (макросы) и т. Д.
  • Haskell для понимания вывода типов и других функциональных концепций.

Если вы работаете в распределенных системах. , Я тоже рассмотрю возможность изучения Erlang. Это тот язык, который я рекомендую изучать, пусть даже поверхностно, только ради изучения, даже если вы никогда не используете их для написания настоящего приложения.

  • Emacs Lisp , чтобы вы могли расширять Emacs.
  • Haskell , чтобы видеть, как чисто функциональное программирование выполняется правильно.
  • APL , чтобы вы узнали, как не писать код .
  • COBOL , чтобы вы могли безумно зарабатывать деньги, поддерживая унаследованный код.
  • Erlang , чтобы действительно узнать о параллелизме. (Спасибо Питу Киркхему за поправку.)
  • Scala для функционального программирования на JVM.
  • Clojure для Lisp-подобного функционального языка на JVM.
  • Prolog для понимать логическое программирование.
  • D , чтобы вы могли понять, почему все фанатики D всегда настолько продвинуты.
  • C # , поэтому вы можете программировать для .NET (и Mono).
  • F # , чтобы вы могли выполнять функциональное программирование на .NET.
  • Forth для языков на основе стека.
  • PHP , чтобы вы могли видеть, как , а не , создавать язык. (Шучу. Изучите PHP, потому что он действительно полезен для веб-разработки.)
  • JavaScript , потому что это в основном язык для клиентских веб-скриптов.
  • bash для хорошего , язык сценариев общего назначения.
  • Visual Basic , чтобы вы могли читать код, написанный вашим начальником. =)
  • ИНТЕРКАЛ для "развлечения".
  • мозг , чтобы вы могли мучить своих друзей.
  • LOLCODE , чтобы вы могли убедить их оставаться вашими друзьями после того, как подвергнете их ебать мозги.
  • ... И так далее.

    в основном язык для создания веб-сценариев на стороне клиента.
  • bash для хорошего языка сценариев общего назначения.
  • Visual Basic , чтобы вы могли читать код вашего начальника написал. =)
  • ИНТЕРКАЛ для "развлечения".
  • мозг , чтобы вы могли мучить своих друзей.
  • LOLCODE , чтобы вы могли убедить их оставаться вашими друзьями после того, как подвергнете их ебать мозги.
  • ... И так далее.

    в основном язык для создания веб-сценариев на стороне клиента.
  • bash для хорошего языка сценариев общего назначения.
  • Visual Basic , чтобы вы могли читать код вашего начальника написал. =)
  • ИНТЕРКАЛ для "развлечения".
  • мозг , чтобы вы могли мучить своих друзей.
  • LOLCODE , чтобы вы могли убедить их оставаться вашими друзьями после того, как подвергнете их ебать мозги.
  • ... И так далее.

    29
    ответ дан 28 November 2019 в 22:09
    поделиться

    Я бы сказал:

    • C или Ассемблер, чтобы понять, как работает процессор.
    • Smalltalk (или C #, Java, Python, Ruby и т. Д.) Для понимания объектно-ориентированного программирования.
    • Lisp (любой Lisp, Scheme, Common Lisp, Clojure) для понимания программирования высокого уровня, метапрограммирования (макросы) и т. д.
    • Haskell для понимания вывода типов и других функциональных концепций.

    Если вы занимаетесь распределенными системами, я также рассмотрю возможность изучения Erlang. Это тот язык, который я рекомендую изучать, пусть даже поверхностно, только ради изучения, даже если вы никогда не используете их для написания настоящего приложения.

  • Haskell для понимания вывода типов и других функциональных концепций.
  • Если вы занимаетесь распределенными системами, я также рассмотрю возможность изучения Erlang. Это тот язык, который я рекомендую изучать, пусть даже поверхностно, только ради изучения, даже если вы никогда не используете их для написания настоящего приложения.

  • Haskell для понимания вывода типов и других функциональных концепций.
  • Если вы занимаетесь распределенными системами, я также рассмотрю возможность изучения Erlang. Это тот язык, который я рекомендую изучать, пусть даже поверхностно, только ради изучения, даже если вы никогда не используете их для написания настоящего приложения.

    3
    ответ дан 28 November 2019 в 22:09
    поделиться

    Это может звучать безумно, но сначала я научился программировать макросы VBScript для Windows. Я использовал шаблон, который доступен здесь http://vbscript-macro-template.blogspot.com/ , и я просто добавил к нему, а также попытался понять все, что он делает. Теперь, несколько лет спустя, я пишу свои собственные настольные приложения и приложения для баз данных.

    0
    ответ дан 28 November 2019 в 22:09
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: