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. Чтобы не придумывать ей имя. Маленькая фишка, но ИМХО полезная.

★★★★★

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

Сколько тебе раз повторить что философия - не наука? И не *метанаука* никакая, ну не влияет на науку никак?

Ты, бля, реально ламерок на голову.

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

Если это не теория, то что это? Один их критериев научности? Так я тоже могу выдвинуть критерий научности. Теория является научной, если в её разработке принимал участие Вася Пупкин. Такая вот аксиоматика и методология. Доказывать это утверждение не нужно, потому что это не теория, а критерий научности и методология.

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

Чем критерий-аксиоматика и методология «необходимым условием научности теории является её фальсифицируемость» хуже критерия-аксиоматики и методологии «необходимым условием научности теории является участие в её разрабтке Васи Пупкина».

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

следствия
из 1 «нефальсифицируемые теории являются ненаучными»
из 2 «теории без Васи Пупкина не являются научными теориями»

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

Философия - кормушка для паразитов.

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

Думаешь, нае...ал Поппера? Если переформулировать его, нельзя доказать несуществование, можно лишь доказать существование. Так что твой марксизм идет в ...опу, потому как мошенники, разработавшие его, не придумали доказательств его работоспособности.

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

Что вы говорите?

Критерий Поппера говорит «Всякая научная теория может быть опровергнута с помощью эксперимента».

Берем теорию «На нейтронах в вашем доме живут крохотные муравьи». Научная ли она по Попперу? Да! Её можно попытаться опровернуть, детально исследовав все нейтроны вашего дома пока недоступными нам средствами. То есть доказывая несуществование! Так теория про муравьёв, живущих на нейтронах в вашем доме, является фальсифицируемой и имеет необходимое свойство для научности.

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

Берём теорию «Динозавров выдумали и их не было никогда». Научная ли она по Попперу? Надо доказать реальность существования некогда динозавров. То есть их существование! Доказывается просто поиском их скелетов и т.п. То есть доказывая существование.

Теория «Динозавров выдумали» научная по Попперу, так как фальсифицируема.

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

1) Теория «Сферические кони в вакууме есть».

Применяем критерий Поппера. Для научности этой теории надо провести эсперимент, доказывающий их отсутствие в вакууме. То есть фальсифицировать это утверждение о существовании коней. Доказать их отсутствие в вакууме невозможно, так как вакуум возможно имеет бесконечную протяжённость и не подвластен иследованию.

Значит теория «Сферические кони в вакууме есть» ненаучна по Попперу.

2) Теория «Сферические кони в вакууме есть в Солнечной Системе».

Применяем критерий Поппера. Для научности этой теории надо провести эсперимент, доказывающий их отсутствие в вакууме Солнечной Системы. То есть фальсифицировать это утверждение о существовании коней. Доказать их отсутствие в вакууме Солнечной Системы возможно, так она ограничена в пространстве и исследуема.

Значит теория «Сферические кони в вакууме есть в Солнечной Системе» научна по Попперу.

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

ты своим демпингом на жир развалишь всю мировую пищевую промышленность

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

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

А вот теория «А не существует» является по Попперу всегда научной. Так как можно сфальсифицировать эту теорию, сказав, что А существует. Это доказуемо, так как А может когда-то где-то обнаружиться, в другой галактике или неизвесно где ещё.

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

> философия - не наука

Теоретически, можно было бы попросить у тебя обоснование своих метанаций, но учитывая, что ты:

1) за последние полтораста постов выдвинуть их так и не осилил
2) ни ухом, ни рылом в предмете, суждение о котором выдвигаешь

я думаю, это совершенно бессмысленно.

Оставляю тебя на едине с BOEHKOM'ом. :3

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

>Теоретически, можно было бы попросить у тебя обоснование своих метанаций, но учитывая, что ты:

Да тебе уже раз двести показали и объяснили, почему.
Но тебе, видимо, IQ не позволяет понять прочитанное. Такое бывает, не переживай.

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

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

да, а также научна теория «На нейтронах не живут крохотные муравьи», которая также фальсифицируема. И покуда нет подтверждений первой теории и опровержения второй теории, вторая считается более научной, т.к. не преумножает сущности.

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

>Я уже нажрался этим Поппером...

...и облевал наполовину переваренными кусками весь ЛОР

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

> Это не критерий научности, идиот, это критерий фальсифицируемости.

Не-не. Это как раз Поппер считал свой критерий - критерием именно научности теории.

Для научности это только необходимое условие, а не критерий.

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

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

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

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

>Не-не. Это как раз Поппер считал свой критерий - критерием именно научности теории.

Это не критерий научности. Это необходимое условие научности.

Разницу между «критерий» и «необходимое условие» можешь нагуглить сам.

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

> Это не критерий научности. Это необходимое условие научности.

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

По теме. Критерий научности - это эдакий сферический конь в вакууме. Что считать научным, а что - нет, - одного мнения нет (помимо поппера, есть еще, например, кун).

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

>Хоспади, еще один, который изучает философию по википедии. Хотя бы читали английскую версию, так нет же - русскую читают.

По теме. Критерий научности - это эдакий сферический конь в вакууме. Что считать научным, а что - нет, - одного мнения нет (помимо поппера, есть еще, например, кун).

Зря ты так. Поправлюсь. «Это необходимое условие научности согласно Попперу».

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

> Зря ты так. Поправлюсь. «Это необходимое условие научности согласно Попперу».

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

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

теория согласуется с объектом

излучение Хокинга есть в теории, но отсутствует как объект. бозон Хиггса есть в теории, но отсутствует как объект

следствие сомнительных теорий Эйнштейна

аргументировать слабо?

Некоторые фанатики ОТО и СТО

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

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

Кстати А. Эйнштейн в 1920 году рассуждал про эфир. Про то, что эфир не такая уж и плохая вещь. Это он сделал в своей работе «Эфир и теория относительности».

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

Ну а Лоренц в 1904 году свои преобразования получил исходя из наличия эфира. Об этом Эйнштейн также пишет в своей этой работе 1920 года.

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

Ludwik Kostro даже написал книгу «Einstein and the Ether», где он расказывает о том, как Эйнштейн, начиная с 1916 года, разработывал теории эфира. Содержание книги

Chapter 1 - Einstein's views on the ether before 1905

Chapter 2 - Einstein denies the existence of the ether (1905-1916)

Chapter 3 - Einstein introduces his new concept of the ether (1916-1924)

Chapter 4 - Development of Einstein's ether concept (1925-1955)

Chapter 5 - Physical meaning of Einstein's relativistic ether

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

Молодец! Награждаешься медалькой «отличник гугления».

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

Главным научным фриком в ТО является сам автор ТО, то рассуждающий с Лоренцом про эфир в 1916 году, то пишуший про эфир 1920 году «Эфир и теория относительности», то в 1924 году издающий работу «О эфире» (Über den Äther) и так далее. Видимо он сам не смог тольком разобраться в своих теориях.

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

>Главным научным фриком в ТО является сам автор ТО, то рассуждающий с Лоренцом про эфир в 1916 году, то пишуший про эфир 1920 году «Эфир и теория относительности», то в 1924 году издающий работу «О эфире» (Über den Äther) и так далее. Видимо он сам не смог тольком разобраться в своих теориях.

Ты, видимо, не понимаешь, как работает физика? Это лишь теории. Теория с эфиром приятна в смысле наличия среды распространения волн света. Вот и пытались ее выработать. Но не вышло. Хотя мб сейчас и есть какие-то более проработанные современные теории эфира.

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

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

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

Ну это Вы применяете известную тактику. Когда не получается критиковать аргументы оппонета, то надо перейти на критику самого оппонента. «Не понимает», «не читал», «фрики».

Это правильное применение «правил демагога»

..............

Помни — оппонент всё время должен доказывать, что он не верблюд.

..........

Если кто-то высказывает экспертную оценку — скажи, что это лишь его мнение;

Если тебе приводят какие-либо факты — скажи, что источник недостоверен;

Если говорят, что дважды два четыре — ответь, что это не аргумент.

............

Если тебя прижали к стенке, демонстративно зевни и скажи: «Всё это полная чушь. Я считаю, что…». Аргумент «всё это чушь» принципиально неопровержим.

.........

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

>Ты, видимо, не понимаешь, как работает физика? Это лишь теории.

Вообще-то тут jtootf отрицательно высказался про эфир, вот я и привел некоторые аргументы в защиту этой теории. Что даже тот, который отрицал эфир в 1905 году в СТО как постулат, через 11 лет перестал быть таким категоричным.
Сам я не являюсь ни приверженцем теории эфира, ни противником. Я тут сторонной наблюдатель. И пускай физики изобретают теории, главное что бы эти теории не превращались в догмы в физике.

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

>Вообще-то тут jtootf отрицательно высказался про эфир, вот я и привел некоторые аргументы в защиту этой теории. Что даже тот, который отрицал эфир в 1905 году в СТО как постулат, через 11 лет перестал быть таким категоричным.

Где это в СТО есть постулат про запрет эфира? Ну приятно существования эфира. Что тут говорить? Не вижу проблемы в том, что Эйнштейн работал в этом направлении. Физика - это ж не религия. Никто (по идеи) не отстаивает свои теории, как неопровержимую истину(это понятие тут вообще не уместно).

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

=) Недавно был как раз подходящий комикс в xkcd: http://www.xkcd.com/675/

Это вообще как-то свойственно. Много людей, неправильно понимая ТО, даже скорее придумав какую-то свою ТО, находят в ней ошибки и жалуются на всемирный еврейский заговор физиков, на догмы в физике и просто таки безграничную тупость этих самых физиков(они ж еще посмели университеты позаканчивать =)

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

> Когда не получается критиковать аргументы оппонета, то надо перейти на критику самого оппонента. «Не понимает», «не читал», «фрики».

Чтобы критиковать аргументы, нужно выполнение обязательного условия — наличия аргументов. Что ты не читал статьи, а лишь пересказываешь пересказ фриков — очевидно из того факта, что ты говоришь об эфире, который Эйнштейн отрицал в 5ом году, и эфире, о котором он говорит в статье, как об одном и том же. В статье прямым текстом говорится, что это «не тот эфир». Dixi. Тег проставь, не забудь.

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

Было что сказано jtootf? «другие фанатики до сих пор веруют во флогистон, теплород и эфир». То есть в этом комментарии эфир был противопоставлен ОТО и СТО.

Я что ответил? «Кстати А. Эйнштейн в 1920 году рассуждал про эфир. Про то, что эфир не такая уж и плохая вещь. Это он сделал в своей работе „Эфир и теория относительности“.»
То есть упомянул о том, что сам Эйнштейн как раз сам разрабатывал теории эфира.

И что получилось в результате? Попёрло хамство.

Оказывается я ничего не читал, ничего не знаю, пересказваю «фриков», неправильно понимаю ТО, нахожу ошибки и так далее. Ну и появилось традиционное упоминание национальной принадлежности Эйнштейна.

BOEHKOM
()
Ответ на: комментарий от kemm

Какие ещё нужны аргументы? Один пользователь сказал, что эфир фигня. Я ответил, что не фигня. И тут же стал фриком, поциентом, у меня пропали аргументы. Может быть Вам всё-так надо иногда читать комментарии более внимательно прежде чем начинать кидаться какашками?

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

> Я ответил, что не фигня.

Разумному достаточно. Я всё сказал в предыдущем комментарии, в том числе и по поводу постулируемой тобой тождественности «эфиров» — это даёт гарантию, что статью ты не читал, а пересказываешь эфирных фриков.

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

>Много людей, неправильно понимая ТО, даже скорее придумав какую-то свою ТО, находят в ней ошибки

Критики ТО не такие уж и неучи, как любят сторонники ТО утверждать. Академик, доктор физмат наук, профессор, ректор МГУ Логунов например ОТО недолюбливал. Он далеко не единственный. Потому что это всего лишь теория. Объясняет она что-то - очень хорошо. Не объясняет что-то - хреново. Как теория теплорода. Хорошая вещь когда-то была, объясняла разные явления. Но отказались потом от этой теории.

BOEHKOM
()
Ответ на: комментарий от kemm

Я погорячился насчёт отрицания эфира в СТО 1905 году. В учебниках физики описание принципа относительности СТО обычно сочетали описанием примеров измерения эфирного ветра, и из его отсутствия делали выводы про отсутствие эфира и использовали как доказательство принципа относительности СТО.

Однако в 1920 году Эйнштейн пишет, что, на первый взгляд, из принципа относительности следует, что эфира нет. Но дальше пишет (есть только англ. вариант) «More careful reflection teaches us, however, that the special theory of relativity does not compel us to deny ether. We may assume the existence of an ether (...)».

BOEHKOM
()
Ответ на: комментарий от kemm

Ну расходится он с Лоренцом по теории эфира, да.
Однако сходятся в том, что абсолюной пустоты нет, есть пространство с физическими свойствами, иначе говоря эфир.
И кстати. Раз уж зашла речь на эту тему. ТО держится на конечности скорости распостранения света. Но тут ведь что получается. С какой скростью падают яблоки механика Ньютона отвечает. С какой скоростью движется звук Ньютон и Лаплас объясняют. А вот почему скорость света в «эфире», «вакууме» и т.п. ≈300 000 км/с, а не 1 000 000 км/с или 100 000 км/с вроде как никто не может пока объяснить. Не известны ли вам чьи-либо труды на эту эфирную тему?

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

С какой скростью падают яблоки механика Ньютона отвечает

можно вывод значения гравитационной постоянной исходя из механики Ньютона? не ответ на вопрос, чему она равна, а ответ на вопрос - почему она равна именно такому значению

почему скорость света

а почему постоянная Планка именно такова? что об этом написано в трудах на эфирную тему?

я не целью потроллить, но вопрос сам по себе достаточно глупый

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

Ludwik Kostro даже написал книгу «Einstein and the Ether»

спасибо, почитаю. однако судя по оглавлению, это не тот эфир, который искали Майкельсон и Морли со своими интерферометрами - и который имел в виду я в своём комментарии

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

Сегодня философия так же важна, как и 100 и 300 лет назад. Примеров тому масса, в том числе, и в этой ветке. Просто многие этого не понимают, и лет через 300 будут говорить то же самое.

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

Насчет «сугубой математичности» есть смысл вспомнить, почему возникла необходимость в исчислении Коши-Вейерштрасса и почему подход Ньютона-Лейбница до сих пор называют «наивным математическим анализом».

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

Наивная пифагорейская уверенность математиков, что весь мир сделан из чисел не может не смешить. Ну расскажите, следствием каких математических эффектов является принцип неопределенности Гейзенберга?

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

> мнения мало, нужны доказательства

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

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