Реально ли создать супер-язык программирования — отвечают эксперты |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2018-08-20 22:13 В мире так много языков. Более 7 тысяч естественных языков, например, русский, английский и пр. Языков программирования не намного меньше, под 3 тысячи. И сейчас, пока вы читаете эту статью, какой-то школьник уже кодит на своем собственном языке. Если у естественных языков есть много общего, то сходства можно найти и в языках программирования. Наш подписчик задался вопросом, которым мы хотим поделиться с вами: «Среди языков программирования очень много общего. Почему, используя принципы ООП, до сих пор не создан супер-язык язык программирования?» Мы обратились за разъяснением к нашим экспертам, а полученные ответы предоставляем вашему вниманию. Рустам Кильдиев, руководитель отдела разработки BigData компании "Иннодата" Области применения языков программирования очень разнообразны: интегральные схемы, веб, системное ПО и т.п. Уникальный супер-язык это универсальность, а, как известно, универсальность ведёт к потере каких-то «фишек», что не всегда приемлемо. Кроме того, принципы ООП очень хороши, но не являются «серебряной пулей». Сейчас быстрыми темпами всё большую популярность набирает Функциональное программирование, которое отлично подходит для параллельного/конкурентного программирования, особенно в эпоху производительности, большого объёма данных и остановки роста частот, на которых работают процессоры. Сейчас целенаправленное создание супер-языка не имеет смысла из-за отсутствия целевой аудитории. На данный момент уже есть огромное количество специалистов, умеющих работать в существующих языках. Массово всем изучать, переучиваться на новый язык экономически нецелесообразно. Кроме специалистов, есть много наработок, библиотек и инструментов, которые нужно будет переписывать на новый язык, что тоже вряд ли будет хорошим решением. Сейчас просматривается плавная эволюция: одни языки сменяются другими, появляются улучшенные варианты (примеры — Java в Kotlin или Scala, JavaScript в TypeScript), делаются попытки объединить языки (прим. JavaScript и Scala в Scala.js). Приведёт ли это к созданию универсального языка (особенно ООП)? Мне кажется, что нет, но время покажет. Сергиус Офицеров, преподаватель HackerU (ответ подготовлен совместно с Михаилом Субботиным, преподавателем израильской высшей школы IT и безопасности HackerU) ООП — не панацея, есть еще и функциональное программирование, и process-oriented programming, и логическое программирование, и много всяких парадигм и подходов. Не будем забывать, что каждый язык программирования был создан для лучшего решения конкретной задачи. Универсальных решений нет нигде, почему они должны быть в программировании? Виктор Ефимов, системный архитектор REG.RU Язык программирования можно рассматривать как набор определённых функций, подходов и свойств. Некоторые из них нельзя совместить в одном языке. Например, типизацию можно выбрать только одну, а автоматическое управление памятью требует дополнительных вычислений и не может совмещаться с максимальной производительностью. Для разных людей и разных задач лучшими будут разные языки с разным функционалом, нет единого критерия. Язык C работает быстро, но не поддерживает автоматическое управление выделением и освобождением памяти, Python его поддерживает, но медленнее C++. В Go гораздо лучше многопоточность (что позволяет эффективнее писать производительные и сетевые приложения), чем в Python, но нет понятия «класса» из ООП (из-за чего сложнее быстро прототипировать или описывать бизнес-логику). C++ поддерживает ООП и быстро работает, однако на нём не пишут веб-сайты, на Ruby пишут веб-сайты, но не пишут firmware для роутеров. Кроме скорости работы программ и поддержки разных парадигм программирования, у языка есть такие неочевидные «свойства», как его комьюнити со своим менталитетом, политики выхода новых версий, инфраструктура инструментария, качество документации, существующие продукты, на нём написанные, и просто репутация языка. Они все влияют на то, как и когда язык будет использоваться, на его будущее и популярность. Большинство программ для Linux написано на C, хотя C++ может то же, что C, и, кроме того, лучше поддерживает ООП. Есть два одинаковых по функционалу языка — Ruby и Python, но только один выбивается в лидеры. При создании супер-языка придётся оставить в нём лучшие черты других языков, выбрав некоторое подмножество совместимых, и исключить худшие. Изъять внедрение PHP кода прямо в HTML (кстати, в своё время этот функционал считался крайне полезным, сейчас же считается очень вредным), GIL из Python, Monkey patching из Ruby (да, и определить, какие черты худшие, сложно — всё субъективно: не всем нравится, что в Go нет классических исключений). И самое главное, добавить слишком много лучших черт в один язык не получится, только выбрать некоторые из них, ибо слишком много функций — тоже плохо (пример — Perl6). ООП — всего лишь одна из методологий программирования, годная не для всех задач, и поддержка его языком не является основополагающим фактором, делающим язык хорошим. Для веб-программирования достаточно минимальной поддержки ООП, само ООП может пригодиться в предметной области приложения, но не всегда. Для системного программирования ООП редко нужно. Есть куча задач, для которых ООП подходит, но которые так же хорошо можно сделать и без него. Если супер-язык и будет создан, то это будет просто ещё один язык, но вовсе не лучший, а старые языки никуда не денутся. Мало того, многие из создателей существующих языков думали, что создают тот самый супер-язык, возможно именно поэтому у языков программирования сейчас много общего. Олег Власенко, заместитель генерального директора СимбирСофт Количество компьютерных языков постоянно растет. Потому что: Во-первых, потому что меняется техника (hardware). Во-вторых, потому что меняются технологии и инструменты – когда-то программисты использовали перфокарты, потом консоли, потом появились IDE, системы контроля версий и многое другое. В третьих, потому что меняются решаемые задачи — началось все с вопросов обороны (расчеты таблиц для артиллерии, взлома шифров ENIGMA, расчета атомных бомб и траекторий ракет), потом подтянулась экономика, потом компьютер заменил телефон, потом телефонокомпьютер (смартфон) заменил фото и видео камеру, стал распознавать образы, добавилась дополненная реальность и т.д. В четвертых, потому что ИТ компании через создание языков создают свои собственные платформы, на которую «подсаживают» весь мир. (Sun, а позже Oracle – платформа на Java, Microsoft – платформа на C#) Есть еще в пятых, в шестых и т.д. Это все заставляет языки программирования плодиться и размножаться, а не только изменяться и исчезать. И хотя последние 30 лет ООП – господствующая методология, но существует множество компьютерных языков, в которых изначально заложена другая методология. Например, с одной стороны это старые добрые ассемблер и Си, а с другой стороны вполне современные HTML, SQL, Erlang и тысячи других. ООП так или иначе оставляет свой след в современных языках, но даже в сравнительно близких языках (например Java и C#) ООП реализован по разному. Резюмируя – по множеству причин миру не грозит единственный супер язык. И поэтому студенту, чтобы стать программистом, приходиться знакомиться по крайней мере с десятком разных языков. Александр Пряхин, декан факультета веб-разработки GeekUniversity, онлайн-университет Mail.Ru Group В замечательной книге Дугласа Адамса «Автостопом по Вселенной» есть прекрасный эпизод, в котором огромный компьютер в течение семи с половиной миллионов лет вычислений искал ответ на «главный вопрос жизни, Вселенной и всего такого». С языками программирования история очень схожа. Что есть супер-язык программирования? Чем он должен отличаться от существующих языков? Мне кажется, мало кто может на это ответить. В существующем мире IT языки программирования — это инструменты, каждый из которых призван решать свою задачу. Так, множество Enterprise систем пишутся на Java, который зарекомендовал себя именно отточенностью на этот слой приложения. Из всего этого следует один важный вывод. Осознавая то, что язык — это инструмент, нужно понимать, что за ним есть более глобальные парадигмы. Это те же алгоритмы, дискретная математика, анализ данных, устройство ЭВМ и прочее. Очень многие программисты, которые вырастают из Junior позиций, на работая и не обучаясь до этого в смежных областях, чувствуют нехватку знаний именно в вышеозначенных областях. И самым правильным решением будет продолжать изучение основ параллельно с совершенствованием знаний о выбранном языке и практике с ним. Егор Болгов, Fullstack Developer, SEMrush Честно говоря, для меня это два различных вопроса: «Почему не создан супер-язык программирования?» и«Почему не все языки программирования объектно-ориентированы?» Каждый язык создаётся с определённой целью — коммуникация, взаимодействие, сохранение чего-либо. Люди создают языки издревле, и каждый из них имеет определённую цель, т.е. соответствует тому, для чего он создавался. Когда язык используется для решения задач вне своих целей — получается не очень хорошо или не получается совсем (представьте себе инженера-механика, описывающего растительный мир терминами «труба», «сосуд», «листовая поверхность»). То же самое и с языками программирования — все они создавались для решения заданного спектра задач. Часть из них именуется «универсальными» языками, но в любом случае в процессе решения задачи на основе универсального языка программист сформирует новый язык, который будет более конкретно описывать решение задачи. Ну а так как у нас множество совершенно разных задач, то и сформировать единый язык для всех этих задач весьма сложно, т.к. в одном случае язык будет слишком общим и не будет помогать решать проблемы, а в обратном — слишком сложным, т.к. будет содержать способы решения всего потенциального спектра задач, которые могут перед ним стоять. Отвечая на первый вопрос в целом, становится ясен ответ и на второй — для некоторых задач объектно-ориентированное программирование является бессмысленным усложнением, например, надо сформировать программу для робота по выполнению нескольких фиксированных операций: передвинуть, закрыть манипулятор, передвинуть, открыть манипулятор. В данной ситуации совершенно нет необходимости описывать объекты, операции над ними и т.д. Андрей Борю, преподаватель образовательного курса «Профессия «Веб-разработчик»» университета digital-профессий «Нетология» Позволю себе перефразировать вопрос: «Почему до сих пор существует так много языков программирования, а не один универсальный?» Сегодня в мире существует более 30 различных языков программирования. И почти все из них появились для решения конкретных задач и лишь впоследствии эволюционировали до своих полноценных версий. К примеру, всем известный php изначально был просто шаблонизатором, а одной из целей создания современного golang было решение реальных проблем, возникающих при разработке программного обеспечения в Google. Современный мир устроен так, что в нем нужно программировать и веб-странички, и микроконтроллеры, и обучающие приложения для школы, и высокоточные инструменты для медицинских операций. И для этого используются совершенно разные инструменты: веб-разработка востребована больше, чем программирование механизмов лазерной хирургии глаза, но при этом порог вхождения в языки, годящиеся для веб-разработки, гораздо ниже, поэтому их чаще используют. Как и язык общения характеризует особенности менталитета каждого народа, так языки программирования используются для разных целей. Евгений Картавец, руководитель отдела обучения GeekBrains, Mail.Ru Group Так сложилось исторически. В этой сфере не было монополиста — язык программирования мог создать любой, одно время это было даже модно. Создавались тысячи языков, на которых никто толком не писал. Были и попытки создать супер-язык. Java, C#, Python — в принципе, это как раз такие супер-языки, на которых можно писать все, что угодно. Есть несколько причин того, что многообразие языков сохранилось, и все не переехали дружно на какой-нибудь Python. Некоторые языки уже прочно заняли свою нишу. У каждого языка есть сильные и слабые стороны, для одних задач он подходит лучше, для других хуже. Кроме того, язык часто обрастает инфраструктурой — фреймворками и т.д., удобных аналогов для которых может не быть в других языках. Екатерина Кошкарова, ведущий специалист департамента информационных решений компании РДТЕХ Смотря что подразумевать под супер-языком программирования. Если мы говорим о языке, на котором нужно реализовать искусственный интеллект, то почему за основу следует брать именно ООП? У объектно-ориентированных языков есть свои недостатки, такие как избыточность, сложность проектирования, относительная неэффективность. Безусловно, у ООП есть и свои плюсы: повторное использование компонент, задействование библиотек… Но, может, для супер-языка возьмем что-нибудь более гибкое? ? Игорь Шеко, Front End Developer, Voximplant Язык программирования — это инструмент, он балансирует между удобством использования и функциональностью. Как отвертка: не бывает удобных отверток, которые могли бы закручивать любые шурупы. Ее либо будет неудобно держать, либо с ней будет чемоданчик дополнительных насадок. Еще одна проблема кроется в самом понятии ООП: с момента появления этого термина мы спорим, что именно он означает. Есть активные сторонники как Smalltalk подхода, так и более поздних идей, появившихся в C++. Кроме того, сейчас сложно найти язык с чистым ООП. Взять хотя бы TypeScript — он поддерживает и ООП, и функциональное программирование, и событийно-ориентированное, и еще несколько парадигм программирования. Такие языки называются мультипарадигмальными, и сейчас их расцвет. Наконец, у каждого языка есть своя ниша, свое назначение. Даже если бы был создан универсальный язык, нам все равно потребовался бы, например, язык для обучения молодых разработчиков, который должен быть простым, а не универсальным. Ян Орещенков, технический директор бельгийско-белорусской IT компании CactusSoft Потому что вселенная бесконечна. ? Поясню. Почему за столько лет прогресса в химии не создано суперлекарство? Почему, за миллионы лет эволюции, не рождено суперсущество? Почему, несмотря на огромные успехи в физике, так и не создана «единая теория всего»? Почему число Пи бесконечно? Я не знаю. Но в наблюдаемой мной вселенной все процессы развития эволюционно бесконечны. Видимо, это неотъемлемое свойство той вселенной, где мы живём. Не стоит ожидать появления супер-языка, это мираж. Микаэл Караманянц, директор компании-разработчика мобильных приложений Рашенсофт Есть несколько причин. Во-первых, существующие языки программирования, которых сейчас огромное множество, создаются под конкретные задачи, устройства и сферы. Создание супер-языка высокого уровня — очень непростая задача, поскольку нужно будет удовлетворить все потребности. Во-вторых, не надо забывать и про финансовую сторону данного вопроса. Разработчики новой среды программирования зарабатывают деньги с продаж. Даже если представить, что создание супер-языка будет реализовано, то это противоречит текущим компаниям по разработке и развитию языков программирования. В этом случае все разработчики языков программирования будут вынуждены слиться в одну компанию или прекратить свое существование — на уже действующем высококонкурентном рынке такая тотальная монополизация редко происходит. Напоминаем, что вы можете задать свой вопрос экспертам, а мы соберём на него ответы, если он окажется интересным. Вопросы, которые уже задавались, можно найти в списке выпусков рубрики. Если вы хотите присоединиться к числу экспертов и прислать ответ от вашей компании или лично от вас, то пишите на experts@tproger.ru, мы расскажем, как это сделать. Источник: tproger.ru Комментарии: |
|