Что такое хороший язык программирования, чтобы научиться расширять ум разработчиков С#?

Вчера вечером я читал Pragmatic Programmer, и он рекомендует изучать целый ряд языков, когда вы проходите свою карьеру - даже если вы" никогда не использовать их. Я всегда думал, что это будет хорошая идея, но книга дала мне достаточный импульс, чтобы серьезно подумать об этом.

В нем также упоминается (слова, имеющие значение), "учите объектно-ориентированный дизайн, и вы будете кодировать чистые программы C по-разному".

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

Функциональное программирование возможно? Любые предложения приветствуются, но, пожалуйста, попробуйте кратко рассказать о том, почему они могут быть интересными и "новыми" с точки зрения пользователей С#.

Ответ 1

Функциональная парадигма - схема, Haskell, Erlang, F #

Сценарии - Perl, Python, Ruby

Также один из тех вариантов APL, как J, K или Q

Разве я упоминаю C? Многие люди, изучающие программирование сегодня, очень мало подвержены воздействию металла, а C помогает вам видеть свет.

Ответ 2

Я предлагаю учиться F #. Вы уже знакомы с .NET Framework, поэтому вам не придется с этим справляться. Вы можете сосредоточиться на языке и изучить идеи функционального программирования.

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

Ответ 3

Могу ли я предложить вам посмотреть из окна разработки и посмотреть на другие аспекты программного обеспечения?

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

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

Ответ 4

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

Если вы хотите придерживаться .NET, попробуйте F #. Для чего-то совершенно нового, я бы порекомендовал Haskell; есть огромное количество информации для начинающих, и сообщество замечательно и невероятно полезно.

Ответ 5

F # - хороший вариант. Но также, динамические языки - например, Javascript. Кроме того, меньше C-ориентированных вещей, таких как Lisp или XSL.

Получите действительно хорошее на них.

Ответ 6

Попробуйте изучить другую парадигму.

Я предлагаю Lisp для функционального программирования по историческим причинам или Erlang для более "коммерческого" языка и Prolog для декларативного (a.k.a логического) программирования.

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

Ответ 8

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

Ассемблер, чтобы понять великанов, которых мы одержим.

Ответ 9

Попробуйте C. Хорошо бы узнать, как справляться с указателями и ручным управлением памятью, особенно когда они происходят из "управляемого памятью" мира, такого как .NET или Java. Это даст вам большую перспективу "как все работает" внутри программы.

Или вы могли бы сделать как я: я программист на С#, но в свободное время я пишу код в ассемблере Z80. Во всяком случае, это, возможно, слишком урод.: -)

Ответ 10

Я еще не пробовал, но F # кажется хорошим языком для изучения. Он функциональный, но также обеспечивает императивный стиль. Он также использует платформу .NET и библиотеки, поэтому многие существующие знания могут быть повторно использованы. Может быть, я должен попробовать это сам скоро...

Ответ 11

Взрыв головы - это форма расширения вашего разума? Если да, попробуйте Objective-C.

Ответ 12

Интересно, что никто не сказал об этом, С++/c! это научит вас основам вещей, которые вы используете каждый день.

Ответ 13

С#/.NET или Java не имеет большого значения, основные понятия идентичны, даже если есть некоторые функции (некоторые только магии компилятора, некоторые более глубокие, такие как generics), которые отличаются.

Получите доступ к функциональному программированию, специализированным языкам, таким как XSLT, XQuery, T-SQL, PL/SQL, OCL и т.д., чтобы столкнуться с более разными концепциями и подходами. Например, SQL-диалекты SQL требуют, чтобы вы считали, что наборы основаны на операциях для получения эффективного кода. XSL-преобразования работают над структурированными данными. Ни один инструмент не соответствует всем требованиям.

Ответ 14

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

Если бы я был вам много лет назад и в ретроспективе: С++ шаблоны в глубину, а не строго "язык", достаточно достойны, чтобы сказать, что это был самый революционный язык в изменении моей перспективы программирования. Начните с разработки Alexandrescu Modern С++, затем создайте несколько программ с новыми знаниями или попытайтесь улучшить существующие классические библиотеки для начала. Там тонна, чтобы учиться.

Ответ 15

  • Функциональный язык - схема, Haskell
  • Динамический язык - Ruby, Python
  • Основанный на прототипе язык OOp - Javascript
  • Язык логического программирования - Prolog