Почему вы используете менее выразительные языки, и я должен также? - PullRequest
0 голосов
/ 10 марта 2010

Я программист на Python, который немного знает Ruby и PHP. Я не знаю достаточно о Java, чтобы делать что-то значимое, и я, конечно, не знаю C, C ++ или других языков низкого уровня. Я слышал все аргументы «кому небезразлична скорость, потому что аппаратные средства дешевы, а кодеры - дорогие», и я не пытаюсь спорить здесь. Я хочу понять 2 вещи о сообществе языков программирования более низкого уровня (будь то C или даже ассемблер):

  1. Какова основная причина, по которой вы по-прежнему используете его (требования к работе, скорость, рабочий стол или веб-интерфейс и т. Д.) ?
  2. Стоит ли мне тратить время на изучение C ++ (в денежном выражении) или других на столь позднем этапе игры, или я получу пользу?

Кроме того, при выборе причин учитывайте преимущества и недостатки динамической и статической типизации. Я в основном программирую для Интернета, но не принимаю это во внимание в полной мере, потому что отчасти это связано с тем, что Интернет - это все, что я знаю.

Ответы [ 7 ]

4 голосов
/ 10 марта 2010

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

Я бы не считал Фортран низкоуровневым или менее выразительным, я думаю, что это DSL для линейной алгебры и более общего вычисления чисел. Так почему я взял наживку и ответил на этот вопрос?

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

3 голосов
/ 10 марта 2010

Для веб-программиста C / C ++ не предложит вам практически никаких преимуществ. Он менее выразителен, чем Perl, Ruby, Python и т. Д., И требует больше кода и внимания к деталям управления памятью. К сожалению, выбор языка для его «функций» часто является вторым после выбора платформы. C ++ не так чист и элегантен, как C #, в основном благодаря совместимости с C. К сожалению, несмотря на то, что для определенных вещей существуют более совершенные языки, большинство из них не компилируется, и большинство из них не получили широкой поддержки.

Если вы планируете разрабатывать коммерческий продукт, который клиент будет загружать или получать на компакт-диске, то C / C ++ предлагает вам защиту вашей интеллектуальной собственности (трудно перестроить), а также небольшой объем времени выполнения, а также возможность ориентироваться на старые платформы, такие как Windows XP.

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

Это инструмент , который нужно использовать, если вы собираетесь реализовывать вещи более высокого уровня, такие как языки, API, наборы инструментов, драйверы, IDE и т. Д. Но C ++ не является инструментом, который нужно использовать, если вы хотите самый быстрый способ разработки внутреннего приложения с графическим интерфейсом или веб-приложения.

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

2 голосов
/ 10 марта 2010
  1. Я думаю, что основными причинами здесь будут производительность, поддержка устаревшей системы и разработка встраиваемых систем.

  2. Мега субъективный, поэтому любой ответ становится бесполезным.

1 голос
/ 10 марта 2010

Почему Python, Ruby и PHP не написаны сами по себе?

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

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

1 голос
/ 10 марта 2010

Есть несколько веских причин для языков более низкого уровня.

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

Во-вторых, есть приложения, которым требуются автономные исполняемые файлы, которые не так уж и велики.

В-третьих, существует огромный объем унаследованного кода на C и C ++, и он скоро исчезнет.

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

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

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

1 голос
/ 10 марта 2010

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

Также учтите, что многие библиотеки, особенно в научных вычислениях, находятся в FORTRAN, C или C++, и ссылки на них из C++ намного быстрее (особенно если вы просто хотите закончить с ним ), который создает оболочки и все интерфейсы самостоятельно.

Если вы выиграете от изучения языка низкого уровня, многое зависит от вашей проблемной области.

0 голосов
/ 10 марта 2010

Возможно, я вас здесь неправильно понимаю, но, похоже, у вас сложилось впечатление, что C ++ является подходящим языком для любого проекта. Это не так. Вы не будете использовать грузовик Liebherr для поездки по пересеченной местности. Каждый популярный язык существует таким образом, потому что он хорошо работает в некоторых ситуациях. Было время, когда C ++ использовался для написания веб-приложений, которые быстро уступили место сценариям Perl из-за компромисса между производством и производительностью. Поэтому, отвечая на ваш первый вопрос, в основном люди все еще используют его, потому что в определенных ситуациях это лучший инструмент для работы.

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

...