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

StackOverflow https://stackoverflow.com//questions/10663108

Вопрос

Можно ли использовать любой язык для программирования в любой парадигме?Например, в C нет классов, но его можно программировать на ООП.Есть некоторые языки (например, ассемблер), в которых я не вижу использования ООП.

Это было полезно?

Решение

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

Однако на практике это неосуществимо, эффективно и неправильно.

Другие советы

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

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

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

В языках, требующих чистоты, таких как Haskell и Mercury, вы не можете внезапно разбить пакеты инкапсулированного изменяемого состояния в объектно-ориентированном стиле посреди произвольного чистого кода (по крайней мере, без использования функций «все ставки отключены»). нравиться unsafePerformIO на Хаскеле или promise_pure в Mercury, чтобы солгать компилятору, и в этот момент ваша программа вполне может полностью перестать работать, если вы не сможете обернуть чистый интерфейс вокруг областей, в которых вы это делаете).Однако вы можете написать весь программы в процедурном или объектно-ориентированном стиле на этих языках, никогда не покидая механизм, который они используют для выполнения ввода-вывода.

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

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

Нет, не все языки можно использовать для программирования в любой парадигме.Однако наиболее популярные из них — Python, C++ и т. д. — позволяют вам выбирать, как вы хотите программировать.Даже php добавляет поддержку объектно-ориентированного подхода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top