tag:blogger.com,1999:blog-654279083390275842.post6245865600205900218..comments2024-03-19T12:22:43.654+03:00Comments on Размышлизмы eao197: [comp.prog.thoughts] Поиграю в оракула по отношению к новым языкам программированияeao197http://www.blogger.com/profile/17283739752119445290noreply@blogger.comBlogger17125tag:blogger.com,1999:blog-654279083390275842.post-1666429589636379302009-11-12T16:05:16.670+02:002009-11-12T16:05:16.670+02:00Вроде хотят JIT для ActionScript сделать на базе L...Вроде хотят JIT для ActionScript сделать на базе LLVM.<br /><br />Ну и наверно им LLVM интересна как платформа, у них же там сплошь хардкорный C++.Rustamhttps://www.blogger.com/profile/17746482246614094380noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-50979540065391971472009-11-12T15:38:35.240+02:002009-11-12T15:38:35.240+02:00>Тык вроде уже вбухивает, кроме яблока еще и Ad...<i>>Тык вроде уже вбухивает, кроме яблока еще и Adobe.</i><br /><br />Интересно. А Adobe-то это зачем? Или они какое-то свое расширение для C/C++ хотят сделать (как Apple с блоками кода для GCD)?eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-2117342557396026962009-11-12T15:29:29.519+02:002009-11-12T15:29:29.519+02:00Тык вроде уже вбухивает, кроме яблока еще и Adobe....Тык вроде уже вбухивает, кроме яблока еще и Adobe.Rustamhttps://www.blogger.com/profile/17746482246614094380noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-71059702602797693912009-11-12T14:24:07.326+02:002009-11-12T14:24:07.326+02:00>Просто нужна платформа для нативных языков, LL...<i>>Просто нужна платформа для нативных языков, LLVM вполне может ею стать.</i><br /><br />Если какая-нибудь мегакорпорация (яблочная, скажем), вбухает в нее N миллионов долларов ;)eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-54206963840985462742009-11-12T11:08:29.455+02:002009-11-12T11:08:29.455+02:00Мой поинт в том, что на данный момент этого сильно...<i>Мой поинт в том, что на данный момент этого сильно недостаточно. С появлением Java правила игры изменились.</i><br /><br />Просто нужна платформа для нативных языков, LLVM вполне может ею стать.Rustamhttps://www.blogger.com/profile/17746482246614094380noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-79207685734747473452009-11-12T07:59:26.663+02:002009-11-12T07:59:26.663+02:00>Основная идея такая, что языками программирова...<i>>Основная идея такая, что языками программирования пользуются по двум причинам (основным): деньги и Just for Fun.</i><br /><br />Fun-ом можно привлечь технологистов и, может быть, early adopter-ов. Но для прагматиков и, уж тем более, скептиков, Fun заключается совсем в другом.<br /><br />К тому же не понятно, о каком Fun-е в языке может идти речь? Например, в C++ есть возможность обратиться по битому указателю или выйти за пределы массива и тратить массу времени на поиски проблемы. А в Java это вылавливается на раз. Это будет Fun-ом? Или в C++ сейчас нет замыканий и итерация по коллекции -- это цикл (или подключение буста), а в Ruby -- вызов метода each с передачей замыкания. Получается короче и проще. Это Fun?<br /><br />Или Fun заключается в возможности решения каких-то задач, которые раньше не решались вообще? Скажем, с помощью блоков кода Ruby я сделал Mxx_ru. С помощью Java раньше делали Java-апплеты. С помощью .NET-а сейчас спокойно объединяют код на VB, C# и F# в одном приложении -- без траха и пыли. Все это Fun?<br /><br /><i>>Т.е. новый язык, с новыми возможностями, созданный для решения текущиих прикладных задач, без дибильных ограничений и возможностью его коммерческого использования вполне может появиться и войти в мейнстрим.</i><br /><br />Мой поинт в том, что на данный момент этого сильно недостаточно. С появлением Java правила игры изменились.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-37573529396330615562009-11-12T00:24:08.047+02:002009-11-12T00:24:08.047+02:00>Откуда, например, ПОПУЛЯРНОСТЬ python. Информа...<i>>Откуда, например, ПОПУЛЯРНОСТЬ python. Информационная поддержка и имидж Гугла.</i><br /><br />Питон завоевал свою популярность еще до того, как Гвидо пришел в Google работать.<br /><br />ps. Остальное прокомментирую чуть позже.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-45738337468320684272009-11-12T00:16:59.928+02:002009-11-12T00:16:59.928+02:00Думаю, что новые языки могут появляться и сейчас. ...Думаю, что новые языки могут появляться и сейчас. И для этого не нужны мегавложения.<br /><br />Откуда, например, ПОПУЛЯРНОСТЬ python. Информационная поддержка и имидж Гугла. Не думаю, что они серьезно вложились деньгами. Основная идея такая, что языками программирования пользуются по двум причинам (основным): деньги и Just for Fun. На php, Java, C# пишут чтобы заработать. Ruby, напрмер, больше for Fun (причем гораздо больше, чем Python, например, но когда будучи студентом выбираешь, какой язык изучать, то информация о том, кого "крышует" Гугл и размышления про полезность языка на новом месте работы существенно влияют на выбор). C и C++ совмещают то и другое (в этом и причина их популярности). Языки чисто для зарабатывания бабла (Java, C#) содержат, обычно, в себе столько ограничений (которые на них накладывают их создатели для достижения собственных целей), что там Фаном и не пахнет.<br /><br />Как вариант появления нового языка: Гугл начинает использовать его (и предлагает другим) в каком-нибудь проекте типа AppEngine. Язык должен быть достаточно удобным в своей нише. Энтузиасты найдутся, далее если гугл не станет его ограничивать, он разойдется шире (Just for fun, если я студент и хочу написать что-то для этой модной гугловой новинки - я его выучу, к тому же, глядишь при устройстве на работу это поможет). Для профессионалов он тоже должен быть чем-то интересен. Если при этом коммерческие заказы появятся под эту новую AppEngine (как, например, постоянно появляются заказы написать приложение для vkontakte.ru), то будет повод и профессионалам начать использовать его и писать и продвигать какие-то библиотеки под него.<br /><br />Подход, что нужно много бабла, готовых библиотек, декументации и вообще без целостной системы из оси, базы и среды разработки ни жить - неверный (крупным конторам очень выгодно, чтобы так думали :-) ). Точнее это один из вариантов, но не единственный. Нужен язык без дибильных ограничений со стороны коммерческой конторы со своими целями и ценностями, достаточно удобный для решения широкого круга задач, легко расширяемый хотя бы сишними библиотеками. В нем должен быть Fun для энтузиастов (чтобы в нем захотели копаться и писать библиотеки) и для него должно быть какое-то коммерческое использование (хотя бы веб фреймворк, который можно поставить работать через fastCGI в виртуалке и который будет решать какие-то задачи, плохорешаемые тем же php). Т.е. новый язык, с новыми возможностями, созданный для решения текущиих прикладных задач, без дибильных ограничений и возможностью его коммерческого использования вполне может появиться и войти в мейнстрим.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-11373378913666476192009-11-11T22:42:42.852+02:002009-11-11T22:42:42.852+02:002Alexander P.: >Значит, на вход методу/функции....2Alexander P.: <i>>Значит, на вход методу/функции. Полдесятка параметров, указатели разные, числа какие-нибудь.<br />Прежде, чем радостно кидаться сохранять параметры и/или считать что-нибудь, надо проверить их корректность.</i><br /><br />Имхо, история развивается следующим образом: сначала в функции можно было передавать все, что угодно. Потом стали добавлять средства проверки переданных аргументов (assert, design by contract). Теперь усилия направлены на то, чтобы неправильные аргументы вообще нельзя было передать и/или использовать.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-34915149734766056722009-11-11T21:41:40.350+02:002009-11-11T21:41:40.350+02:00>Всё это очень хорошо, но как в эту схему уклад...<i>>Всё это очень хорошо, но как в эту схему укладываются, например, сами Питон и Руби, их успех?</i><br /><br />Имхо, один в один укладываются. Главным образом из-за того, что на момент их возникновения объемы стандартных библиотек были совсем другими. Сейчас же ситуация сильно изменилась. Еще важно, что у них в своей нише было мало конкурентов. Ну и плюс к тому, этим языкам потребовалось почти по 10 лет, чтобы стать мейнстримом (Ruby так и больше).eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-89525409244848068492009-11-11T21:29:00.810+02:002009-11-11T21:29:00.810+02:00Всё это очень хорошо, но как в эту схему укладываю...Всё это очень хорошо, но как в эту схему укладываются, например, сами Питон и Руби, их успех?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-77298352707138795132009-11-11T21:12:17.638+02:002009-11-11T21:12:17.638+02:00Ну, наконец, всё хорошо, все входные корректны
Кон...<i>Ну, наконец, всё хорошо, все входные корректны</i><br />Контрактное программирование, Eiffel?<br /><br /><i>Поэтому начинаются всякие комбинации, а давайте сделаем так и так.</i><br />Эпоха стремления к концептуальной чистоте и минимализму (Lisp, C, Smalltalk, Oberon) прошла.<br />От анализа - к синтезу?Skyninhttps://www.blogger.com/profile/17691734889443418349noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-80067441758067212142009-11-11T20:22:26.192+02:002009-11-11T20:22:26.192+02:00Далее к каждому предложению приписывается столь ём...Далее к каждому предложению приписывается столь ёмкое "слово" ИМХО.<br /><br />То, что в ЯП уже придумано всё, что можно, это правда... почти. Ну можно подождать лет 20-40 и посмотреть, может я окажусь неправ.<br /><br />Кстати, есть еретическая идея, что в ближайшем будущем мы будем писать код правя не прямо сам файл кода, а некую нужную "формочку", которую нам будет подсовывать IDE.<br /><br />Зачем такое безобразие? А потому что нужные проверки всего и вся ради достижения великой цели корректности кода сваливаются в функции. Да, проверки нужны. И с точки зрения логики и с точки зрения корректности.<br /><br />Буду гнать примеры, показухи ради возьмём Си++, так сказать худший случай (А-то в Яве вроде можно схитрить).<br /><br />Значит, на вход методу/функции. Полдесятка параметров, указатели разные, числа какие-нибудь.<br />Прежде, чем радостно кидаться сохранять параметры и/или считать что-нибудь, надо проверить их корректность. Так-с, указатели проверяем (довольно часто приходится) на NULL, остальные параметры на ограничения, дёргая какие-нибудь специальные для этого методы.<br />Ну, наконец, всё хорошо, все входные корректны, в противном случае мы же правильно записали об этом в лог и/или показали окошко с ошибкой, а потом вернуть что-то такое, показывающее, что мы ничего не сделали. <br /><br />Потом мы как-то меняем внутреннее состояние, Тут ещё нужно заассертить, вдруг, некоторые из полей "случайно" перестали удовлетворять ограничениям (Тут меня уже начинает заносить, но ведь на всякий случай), мы опять дёргаем методы, опять куда-нибудь записываем или падаем, наконец :). Всё, наконец, мы всё сделали и возвращаем результат.<br /><br />Как-бы всё... Но нет, теперь представьте тот if (ну или специальный "ассерт", который не про ошибки в логике), что обрабатывает эту функцию.<br /><br />Проблему ведь я из пальца высосал, да?<br />------<br /><br />Я хочу вернуться к тому, что всё уже придумано. Да всё уже придумано. Просто то, что хочется в одном языке есть в другом, и наоборот. Поэтому начинаются всякие комбинации, а давайте сделаем так и так.<br /><br />Я как-то много времени потратил на мысли о новом ЯП, да вот логически всё приходило либо к С++, либо к managed Java/C#. Не полностью, но очень похоже. То есть совпадали некие основополагающие принципы, ну просто как пример, есть сборщик мусора или нет, есть исключения или нет :)). Всякие "детали" вроде синтаксиса языка, кажутся вообще какой-то мелочью (которую, конечно, тоже нужно продумывать) по сравнению с глобальным вектором, состоящим из некоторых вопросов :).<br /><br />Кстати, стремление объединять особенности разных языков оно часто (у меня, конечно) выходит плачевное. То есть либо это попытки скрестить нескрещиваемое... либо это просто плохие попытки :). Например, одна из таких: без сборщика мусора в синтаксисе оставить только ссылки, ну и базовые типы (вроде целочисленные) это сами типы, а не ссылки.<br /><br />К чему я? К по большей части бесплодности попыток. Я не гуру в проектировании и в программировании, конечно, тоже. Но просто логически пытаясь соединить всё то, что хочется иметь в языке - постепенно закрадывается подозрение, что не сходится. Начинаю одумываться.Alexander P.https://www.blogger.com/profile/04675404762888219362noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-29917895845743503312009-11-11T18:28:20.044+02:002009-11-11T18:28:20.044+02:002Quaker: имхо, мегакорпорация и мегабаксы могут пр...2Quaker: имхо, мегакорпорация и мегабаксы могут продвинуть перспективный язык за короткое время (лет за 5-6). Без мегабаксов язык так же имеет шансы продвинуться, но в разы медленее. Например, Ruby потребовалось больше 10 лет, чтобы выйти в мейнстрим.<br /><br />По поводу C++ -- лично я не верю, что можно сделать его улучшенный вариант, который бы имел тесную интеграцию с C++библиотеками (пусть даже не Boost, но хотя бы с ACE). Но и отрицать такую возможность не могу -- мало ли что. По-моему, был какой-то язык, который транслировался в C++, но вот не помню его названия (что-то типа <a href="http://xlr.sourceforge.net/" rel="nofollow">XLR</a>).eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-22504079834980633542009-11-11T18:07:41.356+02:002009-11-11T18:07:41.356+02:00Огромное спасибо за такой подробный комментарий. Е...Огромное спасибо за такой подробный комментарий. Единственное, что хочу отметить, что даже если создать <i>“улучшеный С++”, который сможет использовать мегатонны уже существующего С/C++ кода </i>, то думаю все равно успех языку не гарантирован. Сейчас многие рабочие языки содержат средства для обеспечения совместимости с C/C++ (как правило, с чистым C совместимость полная, для C++ вводятся ограничения). Но популярность у этих языков разная.<br />Я думаю, для востребованности языка в настоящее время, помимо интересных идей в самом языке, нужна та самая мегакорпорация с N сотнями миллионов долларов на продвижение. Ну и разумеется, это должен быть не только язык, а желательно серия <b>интегрированных</b> друг с другом продуктов. Например, Microsoft: ОС - Windows, СУБД - SQL Server, средства разработки - Visual Studio. То есть эти продукты должны образовывать замкнутую систему (платформу). Обязательно нужны перспективные исследования (посмотрите сколько людей работают для MS: http://research.microsoft.com/c/1044, а также интересные программы на http://channel9.msdn.com/shows/Going+Deep/). Безусловно, не нужно забывать и о хорошей документации продуктов и книгах.<br />p.s. На самом деле эти два комментария мои, только почему-то под разными именами (ссылки на профиль одинаковы).Quakerhttps://www.blogger.com/profile/08892867659877597144noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-17293401563301021322009-11-11T17:56:14.876+02:002009-11-11T17:56:14.876+02:00Как по мне, так пока не похоже. За последние годы ...Как по мне, так пока не похоже. За последние годы было всего два успешных языка от корпораций -- Java и C#. Что получила Sun от Java -- мне не понятно (а судя по их плачевным финансовым делам, ничего и не получила), с MS ситуация понятнее -- они делают для разработчиков привлекательной свою платформу Windows.<br /><br />Крупные корпорации конкурировали и сейчас соревнуются в разработке языка для больших вычислений (<a href="http://en.wikipedia.org/wiki/Fortress_(programming_language)" rel="nofollow">Fortress</a>, <a href="http://en.wikipedia.org/wiki/Chapel_(programming_language)" rel="nofollow">Chapel</a>, <a href="http://en.wikipedia.org/wiki/X10_(programming_language)" rel="nofollow">X10</a>). Но там, имхо, борьба идет за доминирование в "большом железе". К тому же это "нишевые" языки. Go так же выглядит нишевым. Для целей Google он, судя по их C++ Coding Gudelines, это самое то вместо C++. Но нужен ли кому-нибудь Go вне Google, да еще без родной поддержки Windows -- ХЗ.<br /><br />Так что если какой-то брендинг есть, то он нишевый.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-85777471547585619442009-11-11T17:41:45.032+02:002009-11-11T17:41:45.032+02:00Мне вот что еще на ум приходит - не становится ли ...Мне вот что еще на ум приходит - не становится ли тенденцией у айтикорпораций брендиться с помощью создания своего ЯП? (Novell тоже засветилась - платными инструментами для разработки на Mono в VS)<br />Если это тенденция, то IBM'у или Oracl'ю пора бы пригреть Scala (чтобы раз и в "дамки" среди владельцев новых ЯП). Думаю Одерски и Ко будут рады избавится от груза рутинного развития - и уйти в эскперементы. То что планируется в 2.8 - уже вполне можно заморозить, и с интервалом в годик-два добавлять наработанное Одерски.Skyninhttps://www.blogger.com/profile/17691734889443418349noreply@blogger.com