Подтвердить что ты не робот

Каковы наиболее важные языки программирования для понимания понятий?

На ваш взгляд, какие самые важные языки для программиста знать? Я говорю о концепциях, а не о том, насколько практичен этот язык.

Перечислите языки и причину. Например, Lisp для функционального программирования, JavaScript для ООП на основе прототипов и т.д.

4b9b3361

Ответ 1

Знать:

1) C (системное программирование, понимание архитектуры машин)

2) Perl или Python или Ruby (практические повседневные задачи)

3) Java или С# или С++ (OOP, и очень важно получить работу в эти дни)

Действительно важно:

1) Haskell или ML (функциональное программирование, изменяется так, как вы думаете)

2) Lisp или схема (мощность макросов)

Хорошие дополнения:

1) Forth (очень низкоуровневая, явная операция стека + радость, чтобы написать собственный интерпретатор)

2) Языки сборки (знаете, как работает ваш процессор)

3) Эрланг (параллельная обработка)

4) Пролог (логическое программирование)

5) Smalltalk (истинный OOP и настоящий интерактивный развивающийся)

Ответ 2

  • ассемблерные языки из числа фишек, которые вы можете узнать для низкоуровневых знаний.
  • C, чтобы узнать больше практических знаний о низкоуровневых процессах, поскольку почти все языки реализованы в C.
  • С++ для объектно-ориентированного программирования поверх низкоуровневой доброты C.
  • Pascal, чтобы узнать, как работать с сильной типизацией.
  • Java, чтобы узнать, как вы можете защитить себя от проблем низкого уровня.
  • Perl, чтобы изучать регулярные выражения, слабую/динамическую типизацию и другие полезные вещи.
  • Python, чтобы увидеть сильную/динамическую/утиную печать.
  • Ruby, чтобы увидеть, как объектно-ориентированность работает поверх слабого/динамического ввода Perl-esque.
  • Общий Lisp для этого функционального просветления.
  • Схема для акцента на рекурсию.
  • Emacs Lisp, чтобы вы могли расширять Emacs.
  • Haskell, чтобы убедиться, что чистое функциональное программирование выполнено правильно.
  • APL, чтобы вы узнали, как не писать код.
  • COBOL, чтобы обезопасить деньги от устаревшего кода.
  • Erlang, чтобы действительно узнать о concurrency. (Спасибо Питу Киркхэму за то, что вы меня исправили.)
  • Scala для функционального программирования на JVM.
  • Clojure для Lisp -подобного функционального языка на JVM.
  • Пролог, чтобы понять логическое программирование.
  • D, чтобы вы могли понять, почему все фанатики D всегда так про-D.
  • С#, чтобы вы могли программировать .NET(и Mono).
  • F #, чтобы вы могли выполнять функциональное программирование на .NET.
  • Forth для языков на основе стека.
  • PHP, чтобы вы могли видеть, как не создавать язык. (Просто шутите. Изучите PHP, потому что он действительно полезен для веб-разработки.)
  • JavaScript, потому что это в основном язык для клиентских веб-скриптов.
  • bash для хорошего языка сценариев общего назначения.
  • Visual Basic, чтобы вы могли прочитать код, который написал ваш босс. =)
  • INTERCAL для "развлечения".
  • brainfuck, чтобы вы могли мучить своих друзей.
  • LOLCODE, чтобы вы могли убедить их, чтобы они были вашими друзьями после того, как вы подвергли их мозгу.

... И так далее.

Ответ 3

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

Ответ 4

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

  • С
  • Python
  • Javascript

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

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

Ответ 5

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

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

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

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

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

Ответ 6

Я бы сказал:

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

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

Ответ 7

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

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

  • C - программирование рядом с машиной.
  • Python - программисты nirvana.
  • Perl - когда происходит s ** t.
  • Java - это заставит вас работать.
  • С# - потому что он заставит вас работать.
  • lisp, схема или что-то функциональное, чтобы вывести ваш мозг из колеи.
  • SQL - для управления большими наборами данных.
  • JCL, COBOL, VAX DCL, CShell VB - просто чтобы напомнить вам, как могут быть плохие вещи!

Ответ 8

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

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

Возможно также включить

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

Ответ 9

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

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

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

Ответ 10

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

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

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

Ответ 11

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

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

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

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

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

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

Ответ 12

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

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

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

Ответ 13

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

  • Java: Java - хороший пример OOP, потому что вы должны использовать oop, и он разработан с нуля, чтобы быть языком OOP.
  • ОСНОВНЫЕ: Хотя устаревшие, это хороший пример процедурных языков, и он имеет очень простой синтаксис.

Ответ 14

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

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

Ответ 15

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

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


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

Ответ 16

Pascal или Basic для начала и для освоения основ процедурного программирования.

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

И тогда нужно попробовать ассемблер или C для получения глубокого и Java для OOP.

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

Ответ 17

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

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

Ответ 18

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

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

Неважно, какие из них вы выберете, но вы выбираете один из каждой категории.

Ответ 19

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

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

Ответ 20

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

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

Ответ 21

Alot уже упоминается, но я обязательно добавлю С++ (уже сделано) по следующей причине:

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

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

Ответ 22

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

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

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

Ответ 23

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

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

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

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

Ответ 24

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

Ответ 25

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