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

Стоит ли изучать Аду вместо других языков [С++, С#]?

Если я собираюсь сделать роботов, на каком языке вы мне порекомендовали? В нашем университете мы можем выбирать между несколькими языками. Большинство учеников выбирают Аду только потому, что ее учитель использует.

После некоторых исследований выяснилось, что ада устарела. Что ты думаешь? Стоит ли это узнать?

4b9b3361

Ответ 1

Да. Очень, на мой взгляд.

Ада очень хороша в двух моментах, которые часто игнорируются на других языках программирования:

  • Общая система: пакеты, функции и процедуры могут быть универсальными. Это особенно полезно для укоренения принципа DRY [ Don't Repeat Yourself]. Да, вы можете пойти за борт на дженериках, но то, что я видел в проектах на другом языке, заключалось в том, что программирование вырезания и вставки кажется более распространенным. [и это просто вводит несколько точек сбоя, если ошибка исправлена ​​в этом месте кода.]
  • Собственная многозадачность. Одна из замечательных особенностей функции заданий на уровне языка заключается в том, что многопоточность не воспринимается как "не привязана" и не является громоздким расширением, но интегрирована в язык.

Тем не менее, есть и другие веские причины для изучения/использования Ada. Один из них - придирчивый компилятор, будучи настолько придирчивым, что заставляет вас начинать думать так, что естественно уменьшает ошибки программирования. (Подобно запрету на and и or в том же условии).

Другой - понятие подтипов; подтипы противоположны объектам в ООП, вместо того, чтобы разветвлять дальнейшие деревушки, вы сужаете тип (допустимые значения), чем больше вы уходите от базового типа. {Подумайте об этом с точки зрения правильных наборов; Integer - ваш базовый тип, Natural - ваши неотрицательные целые числа, а положительные - ваши положительные целые числа... и с Ada 2012 вы можете иметь интересные исключения в своих подтипах, например Primes, которые являются подтипами Positives (извините за то, что вы являетесь немного неопределенный в этой последней точке, я все еще изучаю материал 2012 года.)

С Ada 2012 вы также можете иметь предварительные и пост-условия для своих подпрограмм; это само по себе может сделать ваши библиотеки более стабильными. (As может содержать нуль-указатели).

Ответ 2

Совет Питера Норвига, вероятно, имеет значение здесь:

Когда его спросили: "какую операционную систему я должен использовать, Windows, Unix или Mac?", мой ответ обычно: "используйте все, что используют ваши друзья". Преимущество, которое вы получаете от обучения своих друзей, компенсирует любую внутреннюю разницу между ОС или между языками программирования.

Научите себя программировать через десять лет

Вся эссе хорошо читается.

Кстати, Ада был первым языком, который я узнал. Обучение Аде сначала имело одно важное преимущество: никто не использует Аду, поэтому я был вынужден изучать другой язык, прежде чем делать что-либо еще, и тем самым получить перспективу. Одна из худших проблем, которые могут возникнуть у программистов, - это убеждение в том, что то, как все делается на их первом языке, - это просто "Пути". Изучение нового языка легко и очень полезно.

Ответ 3

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

Ada предназначен для разработки программного обеспечения. Как сказал darkestkhan, это не "взлом и надежда на лучший" язык.

Совет Пол Стансифер очень хорош: изучите несколько языков. Удостоверьтесь, что у вас есть много инструментов в вашем распоряжении - не ограничивайте себя только одним языком. Перспектива, которую вы получаете от изучения разных языков, очень ценна. Там определенно более чем один способ одеть кошку - посмотрите, например, на Haskell. Вы получите совершенно новую точку зрения о том, как решать проблемы.

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

Поскольку вы спрашиваете конкретно о робототехнике, хорошей книгой может стать "Создание параллельных, встроенных и приложений в реальном времени с помощью Ada" Джона У. Маккормика, Фрэнка Сингхофа и Джерома Хьюга. Это очень хорошо читается.

http://www.cambridge.org/gb/knowledge/isbn/item5659578/?site_locale=en_GB

Ответ 4

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

Что касается возраста - о, давай - С еще старше. Что так важно в отношении самого возраста языка? вы должны сначала взглянуть на то, что было помещено в Ada 83, прежде чем вы даже можете говорить о возрасте (проблема: основные языки начали использовать набор функций Ada 83 во второй половине 90-х годов, а многие функции [особенно подтипы] все еще не в мейнстриме). Помимо новейшего стандарта Ada с 2012 года - если вы можете назвать это старым, то я не знаю, что такое "новое".

Ответ 5

С++ - это не совсем курица из spring, которую вы знаете. Я думаю, что все это на десять лет моложе Ады.

Что еще хуже, и С++ и С# получают ядро ​​своего языка от C, что на самом деле на десять лет старше Ada.

C был разработан, чтобы упростить построение компиляторов (а не работу программиста) в те дни, когда 16 КБ было много оперативной памяти, а жесткие диски были такими же большими, как промышленные кондиционеры. С++, как правило, начинался с добрых старых поздних 60-х с функциями OO, и С# - это, по сути, настройки Microsoft для С++, чтобы сделать его более похожим на Java. По своей сути, С# и С++ на самом деле старше Ada.

Есть много хип новых языков, чтобы учиться (и в какой-то момент вы должны их изучить). Однако С++ и С# не являются их.

Ответ 6

В то время как Shark8 имеет некоторые очень хорошие моменты в отношении Ады как языка в целом, вопрос был конкретно о робототехнике. В этом отношении я бы сказал: "Не беспокойтесь". После более чем десятилетнего опыта работы со всеми видами робототехники, которые варьируются от Lego до современных рук и рук робота, я никогда не видел роботизированной системы, которая использовала Ada.

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

Приступая к новому проекту робототехники, я принимаю прагматичный подход. Я смотрю на существующие инструменты, библиотеки и утилиты и выбираю тот, который наилучшим образом соответствует моим потребностям. Затем я использую любой язык, который он делает. И 95% времени это С++ или Python.

Ответ 7

Это зависит от того, что вы хотите сделать с этим языком. Lisp даже старше Ады и широко используется в искусственном интеллекте. Изучите язык, который вы хотите, изучите язык, который вам легко освоить, и вам легко понять его концепции. Затем вы можете пойти дальше и узнать больше языков.