Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Fortress] Fortress programming language, Sun разрабатывает новый язык 
V
    Опции темы
Void
Дата 12.1.2006, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 6
Всего: 173



http://research.sun.com/projects/plrg/
Спецификация.

Впечатляет smile
И, что особенно приятно, есть реальный шанс, что эти вещи не останутся академическими разработками, а найдут промышленное применение.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Mayk
Дата 12.1.2006, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: нет
Всего: 134



пролистал все страницы спецификации по диагонали
больше всего понравилось
2.2.19 atomic expression... (!!!)
2.14 tests.. (!!!!)
3.7. syntax expander... (!!!!!!! да это круче препроцессора)
интересно посмотреть всё это в работе.



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Void
Дата 12.1.2006, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 6
Всего: 173



Цитата(Mayk @ 12.1.2006, 03:34 Найти цитируемый пост)
2.2.19 atomic expression... (!!!)

Саттер обещал в следующем C++/CLI.
Цитата(Mayk @ 12.1.2006, 03:34 Найти цитируемый пост)
2.14 tests.. (!!!!)

Ну, фреймворки автоматического юнит-тестирования сейчас вроде много где есть.
Цитата(Mayk @ 12.1.2006, 03:34 Найти цитируемый пост)
3.7. syntax expander... (!!!!!!! да это круче препроцессора)

Давно есть в OCaml, теперь еще и в Nemerle. Действительно крутейшая вещь.

Меня убила наповал система размерностей (2.2.4). Сколько я знаю, в полной мере такие вещи еще нигде не реализуются.

Цитата(Mayk @ 12.1.2006, 03:34 Найти цитируемый пост)
интересно посмотреть всё это в работе.

Многое по отдельности - хоть сейчас, а вот все вместе - самому жутко интересно smile


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Cr@$h
Дата 14.1.2006, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 4
Всего: 41



Они говорят, что хотят дать Fortran то же, что дала Java С++. Интересно, найдет ли он признание в тех кругах, где используется Fortran? Жалко, он с ним несовсем совместим. smile
PM MAIL ICQ   Вверх
Void
Дата 14.1.2006, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 6
Всего: 173



Цитата(Cr@$h @ 15.1.2006, 01:43 Найти цитируемый пост)
Интересно, найдет ли он признание в тех кругах, где используется Fortran?

Почему бы и нет? Уж во всяком случае Fortress удобнее и безопаснее, продвигается крупной фирмой под госзаказ...
Цитата(Cr@$h @ 15.1.2006, 01:43 Найти цитируемый пост)
Жалко, он с ним несовсем совместим.

Проблема использования готовых Фортрановских библиотек решается нормальным FFI - уж на это, думаю, у сановцев умения хватит.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Cr@$h
Дата 15.1.2006, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 4
Всего: 41



Будем надеяться. Хотя, к Fortran я привязался. Будет жалко, если первый высокоуровневый язык канет в Лету. Интересно, не нашел, он будет управляемым? Если да, то про скорость можно будет забыть.
PM MAIL ICQ   Вверх
Void
Дата 15.1.2006, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 6
Всего: 173



Цитата(Cr@$h @ 15.1.2006, 03:08 Найти цитируемый пост)
Интересно, не нашел, он будет управляемым?

Вполне возможно.
Цитата(Cr@$h @ 15.1.2006, 03:08 Найти цитируемый пост)
Если да, то про скорость можно будет забыть.

Думаю, ты не прав. Управляемый строготипизированный язык дает компилятору гораздо больше простора для оптимизации. Уже сейчас управляемые языки проигрывают неуправляемым в среднем не более 10-30%. Дальнейшее развитие компиляторов и появление открытой архитектуры бэкэнда (вроде Phoenix) позволит полностью ликвидировать разрыв.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Sardar
Дата 15.1.2006, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: нет
Всего: 317



Читаю спецификацию, отмечаю детали. Интересно что все молодые языки с какими я сталкиваюсь не имеют C подобный синтаксис, а мне он нравиться smile

Traits как я понял это реализация алгоритма, затем эта реализация может быть использована классом над его данными. Впервые столкнулся в JS, где функция может стать члеом прототипа любого обьекта. Одна из больших сложностей в именах, в алгоритме обычно используем некие абстрактные названия вещам, в конкретных "классах" уже из контекста задачи. Без продвинутого, не текстового препроцессора (не как в C) проблема останеться.

В OCaml впервые столкнулся с таким фокусом как строгая типизация и одновременно не указывание типа переменной. Тип "выводиться" компилятором по тому как используеться обьект (свои операторы и т.д.). Для обьектов ещё куда ни шло, в современных языках обьекты держаться ссылкой (следовательно и передаються также), ссылка на "железном" уровне для всех обьектов обычно одного размера.
А вот как с примитивами, был у меня byte, чере три операции стал double. Можно конечно отказаться от примитивов, всё это обьеткы, разбросанные по памяти, на которые держим ссылки, но об эффективности то забывать тоже нельзя...
Также не удобно получать все значения по ссылке, привычно (и удобно) обьекты - ссылка, примитивы - значение. При каждом вызове функции дёргать с памяти значения примитивов, создавать их копии, всё это не очень.. на вкус... smile

Также в OCaml впервые увидел пример препроцессора, встраивающийся в язык. Для меня это совсем ново... Обычно препроцессор это зло, в том виде какой он в C, т.е. не контролируемый и работающий с исходником как с текстом. Одно удобно, дебаговский код просто добавлять/отключать. Другое дело в OCaml увидел как можно определить грамматику, где для каждой конструкции расширения языка есть свой код.

И тут камень преткновения, что это за код? В смысле компилируем ли мы изначальный исходник, а затем интерпретируем код с нашими расширениями, или всё действительно компилиться, а грамматика выдаёт для своих конструкций код компилятору. Между обеими подходами не много разницы, код для интерпреатора может JIT скомпилиться и исполняться как обычный код, другое дело что гибкость новых расширений ограничена, должны генериться законченые конструкции языка. Во втором же подходе расширение может быть не законценой дополнительной частью конструкции оригинального языка, тем самым действительно "вклиниваться" в процесс порождения кода. Тогда конкретно не врубаюсь это реализовать, ведь не каждая конструкция (не синтаксически, думаем о логике) может "дополнить" другую, к тому же как тогда реализовать оптимизатор (расматриваем самые первые оптимизаторы, а не простые peep hole.

Всем кто дочитал, мля у вас терпения много, как и интереса в язык что и у меня, это радует smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Void
Дата 15.1.2006, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 6
Всего: 173



Цитата(Sardar @ 15.1.2006, 04:02 Найти цитируемый пост)
Интересно что все молодые языки с какими я сталкиваюсь не имеют C подобный синтаксис, а мне он нравиться smile

А мне разонравился smile Все больше убеждаюсь, что конструкции вроде if..then..end или do..end предпочтительнее явных блоков.
Цитата(Sardar @ 15.1.2006, 04:02 Найти цитируемый пост)
А вот как с примитивами, был у меня byte, чере три операции стал double. Можно конечно отказаться от примитивов, всё это обьеткы, разбросанные по памяти, на которые держим ссылки, но об эффективности то забывать тоже нельзя...

Значение не может поменять тип. В ФЯ и на обыкновенные присваивания со скрипом идут, а тут - смена типа smile
Примитивы в OCaml есть: это unit, int, char, bool и конструкторы без параметров (вроде type order = Less | Equal | Greater). Все они имеют размер в машинное слово.
Открою страшную тайну: в OCaml float - ссылочный тип smile Но компилятор оптимизирует работу с ним, делая unboxing где только можно.
Одна из самых неприятных вещей в реализации рантайма OCaml - это отсутствие целочисленной арифметики в полную ширину машинного слова. Один бит у любого значения воруется в пользу GC для пометки - это значение ссылочного типа или нет. К сожалению, никому еще не удавалось создать безтеговый GC для ML.
Цитата(Sardar @ 15.1.2006, 04:02 Найти цитируемый пост)
И тут камень преткновения, что это за код? В смысле компилируем ли мы изначальный исходник, а затем интерпретируем код с нашими расширениями, или всё действительно компилиться, а грамматика выдаёт для своих конструкций код компилятору.

Нет, все действительно компилится, а не интерпретируется: CamlP4 отдает компилятору дамп преобразованного AST, а тот его компилирует так же, как обычный код.
Но в процесс кодогенерации он вмешаться не может, также как и в вывод типов. CamlP4 можно рассматривать как компилятор, target'ом которого является не машинный код, а код на OCaml.
Внедрение кастомных бэкэндов - это отдельная тема, вроде того же вышеупомянутого Phoenix.



--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Cr@$h
Дата 15.1.2006, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 4
Всего: 41



Цитата(Void @ 15.1.2006, 02:25 Найти цитируемый пост)

Уже сейчас управляемые языки проигрывают неуправляемым в среднем не более 10-30%. Дальнейшее развитие компиляторов и появление открытой архитектуры бэкэнда (вроде Phoenix) позволит полностью ликвидировать разрыв.

Да ну. Основная идея управляемого кода -- виртуальная машина (среды выполнения, как хотите), которая позволяет теоретически запускать прогу на любой платформе, лишь бы стояла там она (пусть .Net под Linux'ом). Если посмтреть на байт-код (MSIL), то увидим процессоро независимые команды псевдо ассемблера -- потому и пофиг, где запускать -- машина установлена, значит может запускать код на этой платформе. Отсюда дикий проигрыш в производительности все навороты вроде векторизации, SSE3 и проч. простаиваются. А пытаться оптимизировать байт-код все равно что оптимизировать ассемблерный код -- что толку, спустились, не поднятся.
Говоря про управляемый код, я прежде всего имел в виду управление кучей. В задачах, которые я решаю, любой дотНет загнется за считанные секунды. Обычно результаты операций выделяются целыми массивами и матрицами, которые занимают чуть ли не четверть памяти и которые надо подчищать. Хотя, это еще как писать проги, да и управляемые среды возвращают все больше прав на память...
Цитата(Void @ 15.1.2006, 03:21 Найти цитируемый пост)

Все больше убеждаюсь, что конструкции вроде if..then..end или do..end предпочтительнее явных блоков.

Если, имеешь в виду {} под блоком, то согласен. Порой за птичками не усежу, от кого она -- от цикла, класса или свитча.
Цитата(Void @ 15.1.2006, 03:21 Найти цитируемый пост)

Значение не может поменять тип.

Это правда, но не вся. Во многих языках переменная, являясь в некотром смысле общим типом, может смотреть на своих потомков. Т.е. меняя свое значение -- ссылку, она меняет свой тип, который динамически может подхватываться в программе как дальнейшее ветвление.
PM MAIL ICQ   Вверх
Void
Дата 15.1.2006, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 6
Всего: 173



Cr@$h
Байт-код сейчас никто напрямую не интерпретирует. Его сначала обрабатывает JIT-компилятор, который генерирует машинные коды. И уже сейчас он генерирует очень неплохой код: C# 2.0 во многих задачах генерирует код, сопоставимый по производительности с MSVC. Только за ICC ему пока не угнаться.
Цитата(Cr@$h @ 15.1.2006, 17:48 Найти цитируемый пост)
Отсюда дикий проигрыш в производительности все навороты вроде векторизации, SSE3 и проч. простаиваются.

Придет время, и Intel займется бэкэндами для управляемых языков. Это неизбежно.
Цитата(Cr@$h @ 15.1.2006, 17:48 Найти цитируемый пост)
Если, имеешь в виду {} под блоком, то согласен.

Да, {} или begin/end - т.е то, что называется compound statement.
Цитата(Cr@$h @ 15.1.2006, 17:48 Найти цитируемый пост)
Это правда, но не вся.

Я имел в виду статически типизированные ФЯ.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Cr@$h
Дата 15.1.2006, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 4
Всего: 41



Цитата(Void @ 15.1.2006, 18:11 Найти цитируемый пост)

Байт-код сейчас никто напрямую не интерпретирует. Его сначала обрабатывает JIT-компилятор, который генерирует машинные коды.

Собственно, другого мне даже не известно (уже не помню smile ) -- при первом запуске происхоит компиляция на лету из промежуточного яыка в машинный для данной платформы.
Компиляция с оптимизацией некоторых довольно больших проектов занимает часы. Как ты себе это представляешь при управляемом коде? При первом запуске тебе надо будет подождать часок, чтобы прооптимайзилось все. Да даже не получится этого сделать из-за псевдо ассемблера.
А компилирует кто вообще? -- среда выполнения. Их пишут Mic и Sun. Другие тоже хотят и сюда влезть, чтобы писать оптимизирующие компиляторы, например, Intel, но я себе это плохо представляю, когда стоят два дотНета на одной машине -- как выбрать, какой компилить будет пусть даже на лету, и уж тем более, где указывать параметры компиляции для того же Intel .Net...
Цитата(Void @ 15.1.2006, 18:11 Найти цитируемый пост)

Придет время, и Intel займется бэкэндами для управляемых языков. Это неизбежно.

Естественно, путей на самом деле совсем мало. С бэкэндами я не знаком..., но и не слышал, чтобы они про это подумывали.
Что касается Fortress, то я на него смотрю, как смотрят со стороны C++ на Java. Наверное, перейду таки. Хорошо я еще не так консерватичен и могу здраво выбирать.
PM MAIL ICQ   Вверх
Void
Дата 15.1.2006, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 6
Всего: 173



Цитата(Cr@$h @ 15.1.2006, 23:09 Найти цитируемый пост)
Другие тоже хотят и сюда влезть, чтобы писать оптимизирующие компиляторы, например, Intel, но я себе это плохо представляю, когда стоят два дотНета на одной машине -- как выбрать, какой компилить будет пусть даже на лету, и уж тем более, где указывать параметры компиляции для того же Intel .Net...

Двух фреймворков скорее всего не будет, Intel и другие получат возможность встраивать собственные кодогенераторы. См. http://research.microsoft.com/phoenix/compiler.aspx


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Sardar
Дата 15.1.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: нет
Всего: 317



Цитата(Void @ 15.1.2006, 01:21 Найти цитируемый пост)
Один бит у любого значения воруется в пользу GC для пометки - это значение ссылочного типа или нет. К сожалению, никому еще не удавалось создать безтеговый GC для ML.

В принципе это эффективней по памяти чем структуры с типом(тегом) и union полем, в том плане что проц читает значение одним словом. В машине с 64 словом можно и несколько битов отдать на служебную инфу, точности всё равно достаточно, только для float чисел сложности будут, нельзя "так просто" выделить пару битов на метаинфу (видать отсюда в OCaml float это ссылочный тип...). Xотя какая сейчас экономия, в принципе любой тип храниться/выравниваеться в один или несколько машинных слов, дабы bus error не поймать. Меня это когда то сильно задело, старался использовать минимум памяти, где можно обойтись char или short, int не пользовал... smile
Цитата(Void @ 15.1.2006, 01:21 Найти цитируемый пост)
Внедрение кастомных бэкэндов - это отдельная тема, вроде того же вышеупомянутого Phoenix.

Ясно, в принципе пока это мне не нужно, просто были размышления. А вот с введением traits действительно необсодимо что то подобное "контролируемому препроцессору" на подобие шаблонов в C++, но только менять/декларировать можно было бы всё, имена используемых методов/функций, собственных и других переменных, всё, так что бы класс наследуемый алгоритм не ограничивался в именах своих членов. Только как бы громоздко не вышло... Дочитаю спецификацию, поделюсь как есть.
Цитата(Cr@$h @ 15.1.2006, 14:48 Найти цитируемый пост)

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

Мне всего раз в жизни (сейчас) потребовалось управлять кучей самому, софтина исполняеться на "продвинутом" z80 проце с 512кб памятью в многопоточной (таймер) среде, есессно никакой виртуальной памяти. Изучил как работать может malloc/free для "обычной" памяти, также для страничной виртуальной(размеченной) памяти, ИМXО хорошо реализованный сборщик мусора может работать эффективней чем malloc, если прога совершает туеву хучу мелких аллокаций, хитросплетённых в деревья с "рекурсией". Фрагментации меньше если GC гоняет время от времени данные "из чаши в чашу" собирая живое плотно по страницам.



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Void
Дата 15.1.2006, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 6
Всего: 173



Цитата(Sardar @ 16.1.2006, 00:29 Найти цитируемый пост)
В принципе это эффективней по памяти чем структуры с типом(тегом) и union полем, в том плане что проц читает значение одним словом. В машине с 64 словом можно и несколько битов отдать на служебную инфу,

Можно, но не нужно (кстати, OCaml портирован и на AMD64, и на PPC и на IA-64). Дело не только (и не столько) в точности, а в том, что целые значения периодически приходится выравнивать инструкциями сдвига, что снижает быстродействие. И одновременно это затрудняет интероп. У OCaml не лучший FFI, по трудоемкости оберток сравним с JNI. Хотя есть тулзы вроде SWIG и ocamlidl (да, на OCaml можно работать с COM, как в роли клиента, так и сервера).
Да, и еще одно неудобство проистекающее из внутреннего представлениях данных: длина массивов в OCaml ограничена ~4M, а строк - 16M для 32-разрядных машин.
Цитата(Sardar @ 16.1.2006, 00:29 Найти цитируемый пост)
только для float чисел сложности будут, нельзя "так просто" выделить пару битов на метаинфу (видать отсюда в OCaml float это ссылочный тип...)

Угу, именно так. Вообще, по некоторым деталям технической реализации OCaml стоит глянуть сюда.
Добавлено @ 22:43
P.S. Как-то скачкообразно дискуссия движется smile Может посты сугубо про OCaml выделить из темы?


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Sardar
Дата 15.1.2006, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: нет
Всего: 317



Цитата(Void @ 15.1.2006, 21:39 Найти цитируемый пост)
длина массивов в OCaml ограничена ~4M, а строк - 16M для 32-разрядных машин.

4Мб или 4.Е6 элементов? В принципе в 4Мб много ссылок и примитивов влезет, но это сильное ограничение...
У себя со строками хорошо провернул, не мутируемые, созданные из блоков и связанных списков "указателей" на части блоков. Это помогает не транжирить память при многих строковых операциях, например "test: " + 90 +"Mb" или "[pad]" * 3 (создать новую строку как сложив "[pad]" три раза), также подстроки и другое. Цена этому накладные расходы при чтении строк, например выбирать посимвольно charAt(индекс) будет жутко не эффективно, но решением будет открыть stream на строке и читать её как поток символов (текущую позицию сохраняет "драйвер" потока для строк и не прыгает по блокам). Xотя это всё overkill для простого шаблонизатора вебстраничек для вебинтерфейса мудрёной железки smile

Цитата(Void @ 15.1.2006, 21:39 Найти цитируемый пост)
P.S. Как-то скачкообразно дискуссия движется smile Может посты сугубо про OCaml выделить из темы?

Не думаю, ведь серьёзно Fortress пока не обсуждаем, только гадаем что вкусного у него есть + просто свои мысли, полезно читая спецификацию врубаться как же оно реализовываеться smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Cr@$h
Дата 16.1.2006, 05:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 4
Всего: 41



Цитата(Void @ 15.1.2006, 22:27 Найти цитируемый пост)

Двух фреймворков скорее всего не будет, Intel и другие получат возможность встраивать собственные кодогенераторы.

Это я имел в виду. Конечно .Net та же будет одна. Но все равно, как пользователю выбирать и настраивать кодогенератор. Сейчас по оптимизации много фич накрутили: можно даже автопрофилирование делать -- прога запускается и во время своей "стандартной работы" кидает "какую-то" хитрую инфу в отдеьный файл. Потом компилируешь снова, указываешь использовать наработанный файл. На основе него он делает оптимизацию, и при стандартной работе твоя прога ведет себя довольно шустро.
Компиляция в MSIL -- вещь не благодарная. Там же все в простых терминах написано, на псевдо ассемблере, а про саму библиотеку .Net я вообще молчу -- она же вообще не должна компилиться, на сколько я знаю, стоит себе и стоит под Виндой.
Заботливый компилятор показывает, какие циклы векторизовались, какие нет, почему так и т.д. А тут у него один MSIL. А ведь векторизация -- это грубо увеличение скорости работы цикла со стандартными операциями во столько раз, сколько АЛУ по плавающей точе установлено на проце. У камней с SSE3 их, кажись, 4. Актуально, не правда ли?
Про управляемый код -- можешь обозвать любой язык .Net'ом (например, MC++) и использовать для него соотв. компилятор, но, объясняя все в терминах MSIL, особо не разгонишься, никакой специфики проца. А выполнять его будет только CLR, на к. покушаться третьим лицам не разрешено вообще-то.
Цитата(Sardar @ 15.1.2006, 23:29 Найти цитируемый пост)

malloc/free для "обычной" памяти

Да мне бы матрицу или массив освободить самому через какой-нить deallocate -- так ведь и этого не дают.
Цитата(Sardar @ 16.1.2006, 00:58 Найти цитируемый пост)

Не думаю, ведь серьёзно Fortress пока не обсуждаем, только гадаем что вкусного у него есть + просто свои мысли, полезно читая спецификацию врубаться как же оно реализовываеться

Sun этим серьехно занилась. Слышал тестирования и разработка и в Питере проходит.
PM MAIL ICQ   Вверх
Void
Дата 16.1.2006, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 6
Всего: 173



Цитата(Sardar @ 16.1.2006, 01:58 Найти цитируемый пост)
4Мб или 4.Е6 элементов?

4 миллиона элементов (ну и соответственно 16 Мб). Для float array - только 2 млн., потому что компилятор трактует массив вещественных чисел особым образом, храня их сразу в unboxed виде.
Цитата(Sardar @ 16.1.2006, 01:58 Найти цитируемый пост)
У себя со строками хорошо провернул, не мутируемые, созданные из блоков и связанных списков "указателей" на части блоков. Это помогает не транжирить память при многих строковых операциях, например "test: " + 90 +"Mb" или "[pad]" * 3 (создать новую строку как сложив "[pad]" три раза), также подстроки и другое. Цена этому накладные расходы при чтении строк, например выбирать посимвольно charAt(индекс) будет жутко не эффективно

Кстати, вот в этом документе описывается интересная структура данных VList, с амортизированным временем конкатенации и произвольного доступа к элементу в O(1), при некоторой избыточности по памяти.

Цитата(Cr@$h @ 16.1.2006, 07:06 Найти цитируемый пост)
А тут у него один MSIL. А ведь векторизация -- это грубо увеличение скорости работы цикла со стандартными операциями во столько раз, сколько АЛУ по плавающей точе установлено на проце. У камней с SSE3 их, кажись, 4.

Я знаю, что такое векторизация smile Правда, на плавающей арифметике двойной точности больше двухкратного ускорения получить сложновато.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Cr@$h
Дата 18.1.2006, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 4
Всего: 41



Цитата(Void @ 16.1.2006, 16:25 Найти цитируемый пост)

Правда, на плавающей арифметике двойной точности больше двухкратного ускорения получить сложновато

Будет 8 АЛУ с регистрами длиною в 8 байт -- будет в восемь раз прирост, грубо, конечно.
Но мы отошли. Так или иначе от управляемого кода никто уходить не собирается, и незачем, поэтому обязательно что-то придумают и для аппаратной специфики...
PM MAIL ICQ   Вверх
regis
Дата 17.3.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 12.12.2005
Где: Москва, Россия

Репутация: 2
Всего: 7



Занятно: хотя название предполагает родство с Фортраном, язык значительно больше напоминает APL. Также собственный набор символов, близость к нормальной математической нотации, мощная матричная алгебра и пр. Но идея может быть и неплохая.


--------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой.
PM MAIL WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Добро пожаловать в раздел "Другие языки" форума Vingrad!

Void
Void

Раздел посвящён различным языкам программирования, для которых (в силу невысокой популярности) нет отдельного раздела (GPSS, Lua, MATLAB, Ada, Forth, Smalltalk, Tcl, REXX, AWK и др.)

  • Обязательно следуйте правилам Форума.
  • Пожалуйста, прочитайте и следуйте рекомендациям по работе в разделе и навигации по Форуму.
  • Для вставки текстов исходных кодов используйте подсветку синтаксиса из выплывающего списка Код в форме ответа. Если Ваш язык в списке не представлен, то используйте тег: [code=ваш_язык]код[/code], например, [code=ada]код[/code]. Если в будущем подсветка синтаксиса для указанного языка будет реализована, исходный код преобразится.
  • Помните, один вопрос - одна тема.

Приятного времяпрепровождения! С уважением, Void, kemiisto .

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Другие языки | Следующая тема »


 




[ Время генерации скрипта: 0.2187 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.