Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Динамические языки это те, которые победят мир IT ;-) 28.08.07 15:23 Число просмотров: 5196
Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 28.08.07 19:15 Количество правок: 1
|
> Лисп хорош, но динамические языки имеют один СУЩЕСТВЕННЫЙ > недостаток: низкая эффективность. Этот недостаток со временем всё меньше и меньше принимается во внимание. Нельзя сопостовлять динамику и эффективность... Это понятия разных миров. К примеру, динамика forth, из-за его специфики позволяет писать на очень скудных аппаратных платформах весьма эффективные вещи. В своё время микроэлектронщики были увлечены им настолько, что разработали специализированный forth-процессор, правда судьба его оказалось схожа с судьбой SUNовского JAVA процессора ;-)
> Да и плюсы при грамотном использовании позволяют писать > красивый, понятный код, а при безграмотном можно > прострелить себе ногу с использованием любого инструмента. Я всё больше склоняюсь к мысли, что большому проекту не нужна мощь ковыряния в битиках, что дают C/C++, пусть битики ковыряет скажем венда с её API + примитивы виртуальной машины в случае использования вещей наподобие forth или смаллтока. Тот же пример про реестр — сишники видят его как вендовозное API... Которое возвращает дескрипторы на СПЕЦИФИЧНЫЕ ОБЪЕКТЫ на самом деле, юниксоиды мечтают прикрутить его как файловую систему, от которой уже юниксоидов начинает подташнивать, потому что взгляд на хранение данных только через призму файловой системы это страшные шоры... На моей практике я видел две прекрасные модели реализации доступа к реестру — в .net и в Smalltalk, причём в смоллток мне понравилось больше, оно там сделано как подклассы словарей, что и есть суть долбанного виндовозного реестра.
Причём при работе с реестром кайфуем от динамики... словарь может перечислять свои ключи, может по ключу выдавать значение... Которое может быть также словарём (читай «подключ»), а может быть значением именно того типа, каким оно и является в реестре.
К примеру: найти все ключи в HKLM->SOFTWARE, которые начинаются на букву 'm' выглядит вот так:
(RegKeyAbstract localMachineRoot at: 'SOFTWARE')
keys select: [:each | 'm*' match: each ignoreCase: true]
---
> Что же до написания компилятора: пусть лучше будет сложно > написать компилятор языка, чем программы на нем. Не знаю... В последнее время мне больше нравятся вещи типа хороших реализаций смоллтока. Библиотека классов там вылизовалась больше 20 лет, виртуальные машины тоже могут делать и делают замечательные вещи. На компиляторы смотрю с отвращением... В своё время Delphi был увлечён из-за его скорости компиляции, потому что ещё в том время склонялся к agile programming...
Короче, каждый кулик хвалит своё болото ;-)
У автора корневого поста опять же пример с вычислением среднего по двум целым замечательный в плане демонстрации того, что у разработчика не должна на самом деле болеть голова за классы, является ли класс примитивным и проч., особенно в математике, моя голова мне дороже, и я знаю, что в смаллток выражение (a + b) / 2 расчитается корректно при любых входных a и b, лишь бы в иерархии они сидели ниже класса ArithmeticValue ;-)
Более того, при расчёте, скажем, (1 + 2) / 2 получим экземпляр класса Fraction, без потери точности в вычислениях, и меня это НЕ ЗАБОТИТ, всё летает и прыгает и выводится без геморроя.
То же самое при расчёте (1073741823 + 1) / 2 не уличу с потерей знака, поскольку я знаю, что у меня целочисленные вычисления имеют неограниченную разрядность.
К примеру, итерационный расчёт факториала 1000 выглядит вот так:
(2 to: 1000) inject: 1 into: [:s :i | s * i]
Всё. Одна строка, 4 объекта, и посылка сообщений между ними ;-)
|
|
|