LINUX.ORG.RU

новый язык. Еще один подход.


0

0

Доброго времени суток!

Давненько я здесь не флудил. Короче, ещё одно видение нового мегаязыка.
Известно, что паскаль компилируется в несколько раз быстрее, чем С. Поэтому, подход к созданию динамического языка через промежуточный компилятор Паскаля выглядит более здравым, чем подобный же подход через промежуточный компилятор С. Однако, сложилось так, что «всё» написано на С. Значит, мораль-то в чём?

1. Вычленяем в С то, что заставляет его медленно компилировать.
2. Делаем частичный компилятор С в язык, подобный Паскалю (который можно быстро компилировать).
По моим понятиям, что мешает С быстро компилироваться (могу ошибаться):
- система типов
Значит, нужен промежуточный язык, в котором неявное становится явным.
- идеология сборки с многократным чтением инклюдников
Значит, нужно поменять идеологию сборки. Я думаю, нужно уметь создавать некий «модуль», подобный «прекомпилированному хедеру», но более гибкий. С gcc я почти не работал, в MSVS прекомпилированный хидер - один на проект и этого мало. Нужно несколько. Они должны инкапсулировать состояние препроцессора и перекомпилироваться только по необходимости.

Тем самым мы получаем в наследство всё, что есть в С, только с быстрой сборкой.
Далее добавляем:
- нормальные макросы (включая обратимые макросы, возможность подменить лексеры и включая средства отслеживания сорсов)
- возможность делать код динамическим, т.е. динамически перекомпилировать отдельные функции и менять типы данных. Не все, но большинство.
- специальные переменные, локальные функции, замыкания
- встроенный тип «вариант» и полноценный полиморфизм
- декларативное управление памятью. Работая в лиспе, я чётко понимаю, что он мало подходит для задач реального времени. Я не думаю, что языки со сборкой мусора когда-нибудь смогут использоваться для этого. Да, можно извратиться и иногда накрутить много циклов без сборки мусора, но программирование становится очень сложным. Кроме того, ничего не декларируется о неожиданном порождении мусора в библиотеках или даже в самой рантайм-среде (например, если вдруг запустится JIT-компилятор). Поэтому, предлагается поддерживать на уровне компилятора всякие «умные указатели», чтобы можно было в статике проверить правильность работы с памятью.Конечно, вообще говоря эта задача не разрешима. Но представьте себе, например, сигнатуру функции:

fresh treeNode makeTreeNod(alien referenced treeNode parent);

Здесь говорится о том, что функция возвращает treeNode, выделенный в куче. Значит, кто-то в будущем должен будет позаботиться о его уничтожении (если мы не находимся в режиме компиляции с автоматической сборкой мусора, что может быть нужно для отладки или гарантии динамизма). При этом параметр parent также является ссылкой. alien говорит о том, что этот параметр не будет уничтожен нашей функцией. referenced говорит о том, что мы, возможно, создадим на него новую ссылку. Как минимум, это - автодокументация. Как максимум - подсказка компилятору. Я для своего пользования разработал несколько таких деклараций и пользуюсь ими на работе (пишу на Дельфи). Мой набор неполон, но вот он:

onStack - это вызов функции, которая гарантирует очистку объекта по выходе из кадра стеков. Поскольку это Дельфи, приходится использовать на стеке переменную variant, храняющую интерфейс (она автоматически освобождается при выходе из кадра стека, а на неё уже вешается всё остальное). При выходе из кадра вариант уничтожается (число ссылок равно нулю) и в деструкторе объекта происходит удаление объектов. В С++ это делается размещением экземпляра класса на стеке, хотя по-моему, в общем случае в С++ это тоже не так просто.

fresh - для возвращаемого значения или локальной переменной. Создали в области видимости и куда-то передаём (или возвращаем), после чего мы уже не отвечаем за удаление
my - для локальной переменной. Функция создаёт объект и удаляет его
alien - для параметра. Функция не берёт ответственности за удаление объекта.
eat - для параметра. Принимающая функция теперь отвечает за удаление
kill - для параметра функции. Не я создал, но я убъю до возврата из функции.
нет декларации - ничего не известно и нельзя судить о поведении функции в отношении удаления этого объекта.

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

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

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

/*М fresh*/treeNode makeTreeNod(/*M alien referenced*/ treeNode parent);
по сути означает то же самое, но не проверяется компилятором. Или же

typedef treeNode fresh_treeNode;

или же
#define FRESH(x) x
#define ALIEN(x) x

FRESH(treeNode) makeTreeNode(FRESH(ALIEN(treeNode)) parent);

Я пользуюсь, мне нравится.

А, вот ещё одну фишку вспомнил, только не могу её сформулировать в виде С.
declare procedure foo returns (x int, y varchar(100)) as
begin
end
соответственно, foo.return_type должно быть именем записи с двумя полями x и y. Чтобы не придумывать ей имя. Маленькая фишка, но ИМХО полезная.

★★★★★

Ответ на: комментарий от eugine_kosenko

Философия также лежит в основе футурологии и прогностики, которые определяют приоритеты научно-технического развития.

eugine_kosenko ★★★
()
Ответ на: комментарий от jtootf

Да, и еще советую почитать о Расселе, чтобы понять роль философии вообще и логики особенно в становлении формальных основ математики.

eugine_kosenko ★★★
()
Ответ на: комментарий от jtootf

И наконец, любая наука дает кучу примеров, когда достоверные результаты получаются вообще без применения математики. Так что математический подход — далеко не единственный.

eugine_kosenko ★★★
()
Ответ на: комментарий от eugine_kosenko

>Объектом изучения в математике являются структуры

Именно поэтому математика и является языком, а не наукой.

KRoN73 ★★★★★
()
Ответ на: комментарий от eugine_kosenko

> добавим к формальным грамматикам

Ну а кто еще мог изобрести формальные грамматики, как не лингвисты? O_o

конкретно язык программирования Алгол,

Алгол60? Да уж, очень практичная вещь. Это был прорыв, он повлиял на очень многое, но _практичным_ его не считает вообще никто. В общем, академическая разработка в самом лучшем смысле этого слова.

Ну о практичности Алгол68 и говорить нелепо :)

алгоритм быстрой сортировки и

Смешно считать Хоара лингвистом.

программы автоматизированного компьютерного перевода.

Это тоже смешно. Применение компьютеров для задач перевода - это вообще очевидная идея, и кому было поручать ее исполнение, как не лингвистам? И, если припомнить историю («Водка крепкая, но мясо протухло»), они изначально с этим сильно лажались (лет 30). По-моему, задача и до сих пор не решена.

Хватит для начала?

Вопрос не стоит «хватит или нет». Ничто из названного у меня не ассоциируется с «самыми практичными» изобретениями.

Я ничуть не против лингвистов, но математики и физики сделали для CS и SE в разы больше.

tailgunner ★★★★★
()
Ответ на: комментарий от eugine_kosenko

Честно говоря, я думал, что ты прведешь в пример регулярные выражения (я и не помню, кто их изобрел, но, возможно, это был лингвист) - вот уж трижды насквозь практичное изобретение :)

tailgunner ★★★★★
()
Ответ на: комментарий от eugine_kosenko

>ярким примером использования философии на практике является, например, ТРИЗ.

бредятина бесполезная.

anonymous
()
Ответ на: комментарий от eugine_kosenko

>когда достоверные результаты получаются вообще без применения математики.

в области маркетинга, менеджмента и прочего нае-ва ближн^Wкрайних?

anonymous
()
Ответ на: комментарий от eugine_kosenko

>чтобы понять роль философии вообще и логики особенно в становлении формальных основ математики.

Чем философия отличается от математики, кроме других аксиом? Тем что почти все философы просто несут несвязанный болезненный бред, или же берут за основы «теорий» свои нездоровые фантазии?

anonymous
()
Ответ на: комментарий от eugine_kosenko

Формальная логика уже давно устарела, ей на смену пришли более продвинутые виды

например?

О положительных результатах от использования философии просто стесняются говорить — это сейчас просто не модно.

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

Философия также лежит в основе футурологии и прогностики, которые определяют приоритеты научно-технического развития.

вот честно, сколько знаю учёных - все выставляют для себя приоритеты, абсолютно не заботясь мнением футурологов :) или это неправильные учёные?

jtootf ★★★★★
()
Ответ на: комментарий от eugine_kosenko

Да, и еще советую почитать о Расселе, чтобы понять роль философии вообще и логики особенно в становлении формальных основ математики.

Principia Mathematica - это именно формальные основы, и именно математики; о них можно говорить с точки зрения философии, но аппарат, с помощью которого они выстроены - не филососфия

И наконец, любая наука дает кучу примеров, когда достоверные результаты получаются вообще без применения математики. Так что математический подход — далеко не единственный.

можно эту кучу примеров в студию? достоверных результатов, полученных без использования матаппарата?

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

> Principia Mathematica - это именно формальные основы, и именно математики; о них можно говорить с точки зрения философии, но аппарат, с помощью которого они выстроены - не филососфия

Есть мнение, что философия - это наука о выстраивании аппаратов :)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Есть мнение, что философия - это наука о выстраивании аппаратов :)

ну это какое-то уж очень неосязаемое мнение. вот многообразия Калаби-Яу, или там компактные группы Ли - это я понимаю, аппарат: есть абстрактная разработка, есть конкретные приложения

а где аппараты, выстроенные филососфами, кроме как в монографиях этих самых философов, которые читают исключительно другие философы?

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

> а где аппараты, выстроенные филососфами, кроме как в монографиях этих самых философов,

Ммм... логика Аристотеля? Логика Бэкона? Просто мой курс по философии был почти 20 лет назад, я почти ничего не помню :)

которые читают исключительно другие философы?

Ты это брось, Поппер даже на ЛОР популярен :)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Ммм... логика Аристотеля? Логика Бэкона?

отпустите их уже с миром, их время давно прошло

Ты это брось, Поппер даже на ЛОР популярен :)

а так же на ЛОР популярны торсионщина, астрал, вера в несостоятельность второго начала термодинамики, и летающие коровы ;)

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

>> Ммм... логика Аристотеля? Логика Бэкона?

отпустите их уже с миром, их время давно прошло

А неважно. Их время _было_. А сейчас время других, которых я просто не заню (того же Поппера).

Ты это брось, Поппер даже на ЛОР популярен :)

а так же на ЛОР популярны торсионщина, астрал, вера в несостоятельность второго начала термодинамики, и летающие коровы ;)

Главное, чтобы ты больше не сомневался в популярности философских монографий :) Кстати, торсинощина на ЛОРе не популярна, а про летающих коров - это вообще должна быть глава учебника логики и риторики :D

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

А неважно. Их время _было_

а ещё было время, когда землю считали плоской. а потом время геоцентризма и небесных сфер. и что?

А сейчас время других, которых я просто не заню (того же Поппера).

а почему не знаешь? да потому, что нет тебе от него никакой пользы ;)

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

> а ещё было время, когда землю считали плоской. а потом время геоцентризма и небесных сфер. и что?

И прекрасно. Эти гипотезы в свое время послужили развитию науки, см. Тихо Браге. А сейчас эти гипотезы ушли на покой, их сменили другие. Потом и эти уйдут.

а почему не знаешь? да потому, что нет тебе от него никакой пользы ;)

А не знаю я их потому, что я ленивое быдло с устаревшим образованием :)

tailgunner ★★★★★
()
Ответ на: комментарий от jtootf

> и логика уже лет сто как стала формальной, перейдя в категорию разделов математики.

Не надо путать алгебру логики с логикой. Логика никогда не была, не есть и не будет частью чего-бы то нибыло, кроме философии, поскольку логика намертво завязана с гносеологией. Выжимка из логики в виде алгебры логики (точнее - одной из алгебр) известная по вузам, это не вся логика ни разу. ))

LamerOk ★★★★★
()
Ответ на: комментарий от jtootf

> математика даёт некоторый механизм построения внутренне непротиворечивых (с точки зрения некоторой аксиоматики) описаний, плюс аппарат для их исследования/применения - которые и используются в других науках. собственно, применение математического аппарата - единственный подход, который позволяет сколько-нибудь серьёзно говорить о достоверности результатов.

Абберация математического образования. )) Геология, география, филология, биология, история, химия и множество других научных дисциплин дают вполне себе достоверные научные результаты. Матаппарата там нет. Есть матметоды в отдельных узких случаях, есть матмодели для отдельных ситуаций, но в целом всеобъемлющего матаппарата или даже очень отдалённого приближения к нему нет.

LamerOk ★★★★★
()
Ответ на: комментарий от Love5an

- Папа, а правда что от интернета и лора люди тупеют?
- Гыыы, сына, лол.


Не менее научная, чем любая другая.

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

Посмотри значение слова наука в словарях, а потом в википедии. Также, рекомендую посмотреть статью «Научный метод» из последней.

Love5an
()
Ответ на: комментарий от KRoN73

>«Нау́ка — особый вид человеческой познавательной деятельности, направленный на выработку объективных, системно организованных и обоснованных знаний об окружающем мире.»

Каким боком математика наукой является? :)

Угу. В математике есть геометрия. Хотя я вообще считаю, что геометрия скорее должна относиться к физике, конкретно к механике.

Waterlaz ★★★★★
()
Ответ на: комментарий от eugine_kosenko

>Формальная логика уже давно устарела, ей на смену пришли более продвинутые виды.

Сдается мне, что ты не понимаешь, о чем говоришь.

Waterlaz ★★★★★
()
Ответ на: комментарий от LamerOk

Не надо путать алгебру логики с логикой

а различия заключаются в том, что первое - формализовано, а второе - нет?

Выжимка из логики

можно ссылку на техпроцесс выжимки?

алгебры логики (точнее - одной из алгебр) известная по вузам, это не вся логика ни разу

можно пример альтернативной, нематематической логики?

jtootf ★★★★★
()
Ответ на: комментарий от LamerOk

Геология, география, ..., биология, ..., химия

Матаппарата там нет

в этом месте геологи, географы, биологи и химики собираются вместе, и дружно улыбаются над данным утверждением. а затем возвращаются к методам из теории упругости, геометрии, статистики и анализа сигналов

филология, ..., история

вот тут да, спору нет - за исключением лингвистики и всякого там углеродного анализа (который скорее из палеонтологии, чем из истории), к науке эти дисциплины имеют весьма сомнительное отношение. наравне с филососфией

jtootf ★★★★★
()
Ответ на: комментарий от LamerOk

Не менее научная, чем любая другая.

как можно называть научной дисциплину, не содержащую объективных критериев? выводы одного математика (физика, биолога, etc) может проверить другой математик (физик, биолог, etc) - в то время, как выводы из очередного опуса о, скажем, «поэтике и проблематике сонетов Шекспира» являются сугубо субъективными, и их достоверность никоим образом не может быть установлена

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

а затем возвращаются к методам из теории упругости, геометрии, статистики и анализа сигналов

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

к науке эти дисциплины имеют весьма сомнительное отношение. наравне с филососфией

В этом месте все историки, филологи, социологи, а также примкнувшие к ним географы, химики, геологи, биологи собираются все вместе и ... ну ты понял. ;))

P.S. Разушить что ли твою картину мира рассказами о том, как историки и археологи пользуются кластерным анализом? xDD

LamerOk ★★★★★
()
Ответ на: комментарий от jtootf

> в этом месте геологи, географы, биологи и химики собираются вместе, и дружно улыбаются над данным утверждением. а затем возвращаются к методам из теории упругости, геометрии, статистики и анализа сигналов

Да никто же не утверждал, что там вообще не используются мат методы, они используются, но это только местами, не так, как в физике. 90% материала - это не формализованное математически описание окружающей действительности.

вот тут да, спору нет - за исключением лингвистики и всякого там углеродного анализа (который скорее из палеонтологии, чем из истории), к науке эти дисциплины имеют весьма сомнительное отношение. наравне с филососфией

это очень спорно. Ты, наверное, и психологию считать наукой отказываешься?

anonymous
()
Ответ на: комментарий от jtootf

> являются сугубо субъективными, и их достоверность никоим образом не может быть установлена

Откуда ты взял такую глупость? Основа любой науки - повторяемость и проверяемость результата. Филилогия не исключение. Есть методология, есть методика (методы в твоей терминологи). Пользуясь доказанными методами на основе известных научному сообществу данных выполняется определенная работа. Эта работа верифицируема и повторяема.

Субъективность в ней, конечно же, присутствует. Как и в _любой_ научной работе.

LamerOk ★★★★★
()
Ответ на: комментарий от Love5an

> Филология - наука, научная дисциплина? Гыыы.

Сразу видно человека, ни разу в глаза не видевшего настоящих научных трудов по стилистике и лингвистике, например.

anonymous
()
Ответ на: комментарий от jtootf

> как можно называть научной дисциплину, не содержащую объективных критериев

Критерий истинности везде один - адекватность теории действительности.

anonymous
()
Ответ на: комментарий от jtootf

tg> Есть мнение, что философия - это наука о выстраивании аппаратов

ты достаточно хорошо изложил все, кроме вопросов о философии, tg попытался копнуть в верном направлении, но у него не получилось

а где аппараты, выстроенные филососфами, кроме как в монографиях этих самых философов, которые читают исключительно другие философы?

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

1. философия науки (понятие, границы и методология науки (как искать (а не доказывать) теоремы)) *не* есть наука, т.к. она не обладает объективностью — если оператор дифференцирования работает у каждого, то философия науки — не у всех и не всегда :-)

2. тем не менее она полезна:

- попытки описания методологии давали многие великие математики, отсылаю тебя к книгам Пойа

- границы науки тоже крайне интересны, и иногда приводят к научным результатам вроде теоремы Геделя о неполноте и т.д. (вот только не надо думать, что это окончательно!)

что же касается просто философии, то о ней я достаточно низкого мнения.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от jtootf

> можно пример альтернативной, нематематической логики?

1. построение математической модели в физике (и особенно квановой химии :-))))

2. догадка о теореме в математике

З.Ы. ты видимо сейчас занят изучением математического аппарата, и он затмил тебе все небо.

Трое асирантов в сумме могут быть строго более научно грамотны, чем их научный руководитель (т.е. все научные факты, которые знает их руководитель, они знают, и еще знают кое-что). Однако он ими руководит, а не они им. Почему? Потому, что он знает кое-что ненаучное... ну ту самую философию науки... и она для *него* работает :-)

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

> что же касается просто философии, то о ней я достаточно низкого мнения.

Рассел, Пуанкаре, Поппер и прочие смотрят на тебя с негодованием.

anonymous
()
Ответ на: комментарий от LamerOk

P.S. Разушить что ли твою картину мира рассказами о том, как историки и археологи пользуются кластерным анализом? xDD

разрушь. буду крайне признателен

jtootf ★★★★★
()
Ответ на: комментарий от anonymous

> Рассел, Пуанкаре, Поппер и прочие смотрят на тебя с негодованием.

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

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от anonymous

как в физике. 90% материала - это не формализованное математически описание окружающей действительности.

у нас, видимо, какие-то разные физики. можно пример области, в которой физика на 90% оперирует подобными описаниями?

Ты, наверное, и психологию считать наукой отказываешься?

только в связке с нейробиологией :)

jtootf ★★★★★
()
Ответ на: комментарий от LamerOk

Эта работа верифицируема и повторяема

можно пример верифицируемого и повторяемого результата в филологии (окромя лингвистических)?

jtootf ★★★★★
()
Ответ на: комментарий от anonymous

Критерий истинности везде один - адекватность теории действительности.

и как пользоваться этим критерием в филологии и философии?

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

> у нас, видимо, какие-то разные физики. можно пример области, в которой физика на 90% оперирует подобными описаниями?

прочитай еще раз то, на что ответил =)

val-amart ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

1. построение математической модели в физике (и особенно квановой химии :-))))

построение математической модели является примером нематематической логики? это сильное утверждение

2. догадка о теореме в математике

неформализуемо и ненаучно в принципе. не существует «теории догадок»

Потому, что он знает кое-что ненаучное...

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

jtootf ★★★★★
()
Ответ на: комментарий от val-amart

прочитай еще раз то, на что ответил =)

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

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

> неформализуемо и ненаучно в принципе. не существует «теории догадок»

ты похоже вообще не читаешь, что я пишу

да, неформализуемо и ненаучно в принципе, но полезно, и «теории догадок» разрабатывались такими математиками, как Декарт, Эйлер, Лейбниц, Пуанкаре.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от jtootf

> построение математической модели является примером нематематической логики? это сильное утверждение

да.

построение мат. модели неформализуемо и для нее необходима так нелюбимая тобой «теория догадок»; ты можешь конечно заявить, что «сначала берется всеобъемлющая модель, а потом из нее отбрасывается лишнее», но реально люди мыслят не так — они не держат ВСЮ модель в голове, и нахождение важной существенной части модели само по себе прогресс.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

ты похоже вообще не читаешь, что я пишу

напрасно так считаешь

да, неформализуемо и ненаучно в принципе

ну тогда и вопрос снят

«теории догадок» разрабатывались такими математиками, как Декарт, Эйлер, Лейбниц, Пуанкаре

можно названия их работ в данной области? жажду прозрения :(

jtootf ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

построение мат. модели неформализуемо и для нее необходима так нелюбимая тобой «теория догадок»

ок, в некоторой степени это можно принять, однако от главного вопроса это не избавляет - принесло ли какие-либо ощутимые (имеющие приложения) результаты применение методов (или как это в неформализуемой системе-то называется?) этой самой «теории догадок»? или вся научность заключается в наблюдении того нехитрого факта, что людей иногда озаряет?

я требую результатов! дайте мне посмотреть на результаты!

jtootf ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.