Здравствуйте, batu, Вы писали:
B>Хотелось заменить все языки одним. Фактически получилось два.
Кроме языка, есть понятие "модель вычислений". И язык по отношению к модели вычислений — явление вторичное.
Скажем, Паскаль и С относятся к одной модели вычислений. Писать на том или другом языке в рамках одной модели — дело вкуса и/или удобства.
Чтобы "заменить все языки одним", нужно сначала заменить все модели вычислений одной. Если Вы именно это имеете ввиду, то Вам памятник можно будет поставить. Надо только так и сказать — вот я ввожу универсальную модель вычислений, которая лучше всех до сих пор существовавших, и продемонстрировать
сравнением новой модели с каждой из известных. Увы, сравнений моделей не увидел.
Если же имелось ввиду заменить все языки одним в рамках какой-то одной модели, то это означает лишь, что Вы считаете свой язык удобнее и красивее всех других. Не Вы первый, не Вы последний. Опять же хотелось бы примеров-демонстраций, а не описаний синтаксиса.
Re[2]: А вот вам и новый язык. Зацените. Можно ругать.
Здравствуйте, rfq, Вы писали:
rfq>Здравствуйте, batu, Вы писали:
B>>Хотелось заменить все языки одним. Фактически получилось два.
rfq>Кроме языка, есть понятие "модель вычислений". И язык по отношению к модели вычислений — явление вторичное. rfq>Скажем, Паскаль и С относятся к одной модели вычислений. Писать на том или другом языке в рамках одной модели — дело вкуса и/или удобства.
rfq>Чтобы "заменить все языки одним", нужно сначала заменить все модели вычислений одной. Если Вы именно это имеете ввиду, то Вам памятник можно будет поставить. Надо только так и сказать — вот я ввожу универсальную модель вычислений, которая лучше всех до сих пор существовавших, и продемонстрировать rfq>сравнением новой модели с каждой из известных. Увы, сравнений моделей не увидел.
rfq>Если же имелось ввиду заменить все языки одним в рамках какой-то одной модели, то это означает лишь, что Вы считаете свой язык удобнее и красивее всех других. Не Вы первый, не Вы последний. Опять же хотелось бы примеров-демонстраций, а не описаний синтаксиса.
Ты прав. Я об этом не рассказал. И прежде всего потому, что это не для всех. Имею я право на маленькую тайну? Совершенно верно, сначала была модель, а язык только реализовывал ее возможности.
К этому могу добавить что слова "Модель вычислений" касаются не только вычислений, а имеют общий смысл представления и обработки объектов. Операции и операторы у меня тоже объекты соответсвующих классов (класса If например). И "вычисление" этих и обычных объектов имеют общую модель. Я имел надежду, что изучающий язык потихоньку поймет суть. Здесь же много толковых ребят. А я не спешу. Работы еще много. Следи. Скоро повится описание еще одного маленького языка (всего 5 операторов и никаких типов кроме десятичных и логических). Он простенький, но там есть элементы из большого проекта. Должно быть любопытно.
Re: А вот вам и новый язык. Зацените. Можно ругать.
Здравствуйте, batu, Вы писали:
B>Тишина. Хоть кто-то скачал что б почитать? Так спорили о перспективном языке.. Хоть бы обматюкали.. и то легче б стало..
Странно, ничего не понял Я давно интересуюсь языками программирования. Естественно, сам разрабатываю свой собственный язык, куда уж без этого
Когда у меня только появился такой интерес, я просто брал существующие языки и задумывался — чего мне в них нехватает? Вот, вспоминаю простой пример: первый курс универа, изучение языка Си. Почему можно написать
func1("Hello world"); // void func1(char *s);
но нельзя
func2({100,200,300}); // void func2(int *a);
ну и так далее, в таком же духе. Т.е. брал язык и пытатся "дополнить" его до некой "целостности". Начинается, естественно, с мелочей, с "синтаксического сахара", но дальше нередко приходят интересные идеи.
А в данном случае я честно ничего не понял.
1. Как вы пришли к идее нового языка? Чего вам нехватает в существующих? Каков вообще был ход Вашего мышления, когда вы проектировали этот язык?
2. На основе каких языков он основан? Я смотрю — не то паскаль не то бейсик...
3. Почему не Си-подобный (не тема для холивара, но если более 90% всех программ пишутся на си-подобных языках C/C++/C#/Java/ObjC/JavaScript/PHP/Perl/..., то зачем городить огород и разрывать программистам шаблоны?)
4. Самое главное — в чем фишка-то?
Re[2]: А вот вам и новый язык. Зацените. Можно ругать.
Здравствуйте, x-code, Вы писали:
XC>Здравствуйте, batu, Вы писали:
B>>Тишина. Хоть кто-то скачал что б почитать? Так спорили о перспективном языке.. Хоть бы обматюкали.. и то легче б стало..
XC>Странно, ничего не понял Я давно интересуюсь языками программирования. Естественно, сам разрабатываю свой собственный язык, куда уж без этого XC>Когда у меня только появился такой интерес, я просто брал существующие языки и задумывался — чего мне в них нехватает? Вот, вспоминаю простой пример: первый курс универа, изучение языка Си. Почему можно написать XC>
XC>ну и так далее, в таком же духе. Т.е. брал язык и пытатся "дополнить" его до некой "целостности". Начинается, естественно, с мелочей, с "синтаксического сахара", но дальше нередко приходят интересные идеи.
Дополнять к языку это как учить папу трахаться. Язык не возникает откуда-то сверху по наитию. Язык это отражение некой модели. Ее можно назвать "вычислительной" дело не в названии. Но все языки (я имею в виду достойные начиная с фортрана, алгола, ады, с, джавы) являются результатом глубокой проработки и как оно будет "ложится" на архитектуру компьютера с одной стороны, и с другой стороны насколько близко семантически будет отражать природу вещей и "легкость" реализации этой природы. Сбалансировать эти три части и есть задача хорошего языка. Первые языки (ассемблер, фортран, алгол) хорошо "ложились" на компьютер, но вряд ли были семантически близки привычному миру. Но рванули вперед, хотя Lisp и пролог и на комп ложились достаточно хорошо (во всяком случае Lisp, с прологом проблемы эффективности не решены и по сей час.), но реализовывать программы был очень не просто. Еще хуже было с машинами управляемыми потоками данных. Они наиболее близко отражают природу вещей (не команды выполняются последовательно, а приходят данные и инициируют действия) Но там с написанием программ и изобретением языка возникла большая проблема. Потому и не пошли такие системы. Сейчас появилось много новых языков. ООП, прототипные языки. Основные парадигмы остались Императивная, функциональная, логическая и автоматная. Я считаю что современная тенденция идет к слиянию этих парадигм, построение общего синтаксиса, объектного подхода с гибкостью прототипных языков. Кроме того общего синтаксиса требует другая, не вычислительная часть применения компьютеров. Это и документирование, проектирование, базы данных, браузеры они тоже требуют своих языковых средств. Общего синтаксиса требует и нарастающий разрыв в синтаксисе и семантике языков, что порождает конфликты и непонимание между приверженцами какого-то (пусть и замечательного) языка.
Хорошо прошелся! Про парсеры упустил..
XC>А в данном случае я честно ничего не понял. XC>1. Как вы пришли к идее нового языка? Чего вам нехватает в существующих? Каков вообще был ход Вашего мышления, когда вы проектировали этот язык?
Начал с типов и классов. Но это было давно. Net еще не было. Кстати, посмотри. У меня это разные вещи. Класс порождает объекты, а тип-значения. XC>2. На основе каких языков он основан? Я смотрю — не то паскаль не то бейсик...
И Си добавь. Фигурные скобки откуда? XC>3. Почему не Си-подобный (не тема для холивара, но если более 90% всех программ пишутся на си-подобных языках C/C++/C#/Java/ObjC/JavaScript/PHP/Perl/..., то зачем городить огород и разрывать программистам шаблоны?)
Cи нравится. Удобный. Для тех кто привык. Там слишком много не естественных, но оправданых с точки зрения короткой формы обозначений. В принципе это хорошо. В дурака то играешь? И вот представь к правилам игры в дурака добавить правила типа четная карта числовая бъет картинку с таким же номером если считать снизу. А не четная... ну сам придумаешь.. Вот смысл и цель игры при этих новых правилах нисколько не изменится. Появится только дополнительная сушка мозгов. И вместо того что бы думать про саму игру будешь вспоминать все эти искусственные задрочки. А теперь вернемся к Си. Ну, и каким боком там восклицательный знак? Понял куда я клоню? XC>4. Самое главное — в чем фишка-то?
Если б фишка была она я бы не вылезал с новым языком. Фишек там много. Основные, я вынес в первые три раздела. Это правила именования и формирования текста. Правило объединения объектов в группы и реализация объектов. Т.е. правила создания объектов. Это основное. Есть еще сильная вещь (обрати внимание) события. Это здорово облегчает программирование и стандартизирует взаимодействие между объектами. Кстати, позволяет создавать автоматы. Тоже интересная фича. Ну, оператор, например, новый есть Swith. Операция обмена тоже новая фишка. Распараллеливание с помощью групп.. А выполнение групп с надстрочным значением? Та много.. Вот хотя бы первые три концепции кто б осилил..
Надеюсь я подробно ответил? Если будут вопросы пиши. Всегда рад.
Re[3]: А вот вам и новый язык. Зацените. Можно ругать.
Здравствуйте, batu, Вы писали:
B>Сейчас появилось много новых языков. ООП, прототипные языки. Основные парадигмы остались Императивная, функциональная, логическая и автоматная. Я считаю что современная тенденция идет к слиянию этих парадигм, построение общего синтаксиса, объектного подхода с гибкостью прототипных языков. Кроме того общего синтаксиса требует другая, не вычислительная часть применения компьютеров. Это и документирование, проектирование, базы данных, браузеры они тоже требуют своих языковых средств. Общего синтаксиса требует и нарастающий разрыв в синтаксисе и семантике языков, что порождает конфликты и непонимание между приверженцами какого-то (пусть и замечательного) языка. B>Хорошо прошелся! Про парсеры упустил..
XC>>А в данном случае я честно ничего не понял. XC>>1. Как вы пришли к идее нового языка? Чего вам нехватает в существующих? Каков вообще был ход Вашего мышления, когда вы проектировали этот язык? B>Начал с типов и классов. Но это было давно. Net еще не было. Кстати, посмотри. У меня это разные вещи. Класс порождает объекты, а тип-значения.
Вот уже конкретика, поясни НА ПРИМЕРЕ, что да как. В чем разница, что дает разделение понятий и т.д.
B>Cи нравится. Удобный. Для тех кто привык. Там слишком много не естественных, но оправданых с точки зрения короткой формы обозначений. В принципе это хорошо. В дурака то играешь? И вот представь к правилам игры в дурака добавить правила типа четная карта числовая бъет картинку с таким же номером если считать снизу. А не четная... ну сам придумаешь.. Вот смысл и цель игры при этих новых правилах нисколько не изменится. Появится только дополнительная сушка мозгов. И вместо того что бы думать про саму игру будешь вспоминать все эти искусственные задрочки. А теперь вернемся к Си. Ну, и каким боком там восклицательный знак? Понял куда я клоню?
Нет. Чем тебе не угодил восклицательный знак?
Если говорить чисто о синтаксисе Си, то он безупречен. В С++ есть проблема с конфликтом знаков '>' '<' и шаблонными скобками, но ты явно не об этом
XC>>4. Самое главное — в чем фишка-то? B>Если б фишка была она я бы не вылезал с новым языком. Фишек там много. Основные, я вынес в первые три раздела.
Может, и вынес, но это понятно лишь тебе У тебя в голове есть какая-то сложная философская модель языка, ты ее пытаешься выразить в тексте, всем кто пытаетя прочитать — ничего не понятно. Все познается в сравнении. Если хочешь донести до людей свои мысли, попытайся КАЖДУЮ фичу, каждое правило, каждую возможность языка продемонстрировать НА ПРИМЕРЕ. И сказать: вот в моем языке это делается так-то, а на C++/C#/Java это было вообще невозможно или требовало 5 экранов кода
B>Это правила именования и формирования текста. Правило объединения объектов в группы и реализация объектов. Т.е. правила создания объектов. Это основное. Есть еще сильная вещь (обрати внимание) события. Это здорово облегчает программирование и стандартизирует взаимодействие между объектами. Кстати, позволяет создавать автоматы. Тоже интересная фича. Ну, оператор, например, новый есть Swith. Операция обмена тоже новая фишка. Распараллеливание с помощью групп.. А выполнение групп с надстрочным значением? Та много.. Вот хотя бы первые три концепции кто б осилил.. B>Надеюсь я подробно ответил? Если будут вопросы пиши. Всегда рад.
Было бы здорово, опять-таки, ПРИМЕРЫ по КАЖДОМУ пункту этого списка. Вот так — на твоем языке, а вот так — на C++/C#/Java. Сравнение реализаций, преимущества твоей реализации, недостатки существующей.
Только так и никак иначе
Re[12]: Вот основные концепции. Затем три первых раздела. Н
Здравствуйте, batu, Вы писали:
B>Здравствуйте, minorlogic, Вы писали:
M>>А назначение языка то какое? B>Это часть системы. Язык можно использовать, от создания документов, до написания программ.
По аналогии звучит как "инструмент для счастья во всем мире и ремонта холодильников"
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[4]: А вот вам и новый язык. Зацените. Можно ругать.
Здравствуйте, x-code, Вы писали:
XC>Здравствуйте, batu, Вы писали:
XC>>>1. Как вы пришли к идее нового языка? Чего вам нехватает в существующих? Каков вообще был ход Вашего мышления, когда вы проектировали этот язык? B>>Начал с типов и классов. Но это было давно. Net еще не было. Кстати, посмотри. У меня это разные вещи. Класс порождает объекты, а тип-значения. XC>Вот уже конкретика, поясни НА ПРИМЕРЕ, что да как. В чем разница, что дает разделение понятий и т.д.
Разница между объектами и значениями (все они объекты мы здесь имеем ввиду объекты-объекты и объекты-значения) принципиальна. Объект может быть только один и равенство объектов означает что это один и тот же объект. Значений может быть сколько угодно и равенство значений это равенство всех свойств разных объектов значений. Отсюда и операция присвоения у объектов это копирование ссылки, а у значения копирование полностью объекта. Есть еще разница в том, что значение выражается текстом или цифрами. Например, Date=1 сентября 1995, Тор=65. Потому определение типов (они создают объекты-значения) оказывают влияние на лексический разбор. И т.д..Вообщем, есть разница, и тебе судить насколько она принципиальна.
B>>Cи нравится. Удобный. Для тех кто привык. Там слишком много не естественных, но оправданых с точки зрения короткой формы обозначений. В принципе это хорошо. В дурака то играешь? И вот представь к правилам игры в дурака добавить правила типа четная карта числовая бъет картинку с таким же номером если считать снизу. А не четная... ну сам придумаешь.. Вот смысл и цель игры при этих новых правилах нисколько не изменится. Появится только дополнительная сушка мозгов. И вместо того что бы думать про саму игру будешь вспоминать все эти искусственные задрочки. А теперь вернемся к Си. Ну, и каким боком там восклицательный знак? Понял куда я клоню?
XC>Нет. Чем тебе не угодил восклицательный знак? XC>Если говорить чисто о синтаксисе Си, то он безупречен. В С++ есть проблема с конфликтом знаков '>' '<' и шаблонными скобками, но ты явно не об этом
И об этом тоже. Восклицательный знак просто как пример, а так очень его уважаю
XC>>>4. Самое главное — в чем фишка-то? B>>Если б фишка была одна я бы не вылезал с новым языком. Фишек там много. Основные, я вынес в первые три раздела.
XC>Может, и вынес, но это понятно лишь тебе У тебя в голове есть какая-то сложная философская модель языка, ты ее пытаешься выразить в тексте, всем кто пытаетя прочитать — ничего не понятно. Все познается в сравнении. Если хочешь донести до людей свои мысли, попытайся КАЖДУЮ фичу, каждое правило, каждую возможность языка продемонстрировать НА ПРИМЕРЕ. И сказать: вот в моем языке это делается так-то, а на C++/C#/Java это было вообще невозможно или требовало 5 экранов кода
B>>Это правила именования и формирования текста. Правило объединения объектов в группы и реализация объектов. Т.е. правила создания объектов. Это основное. Есть еще сильная вещь (обрати внимание) события. Это здорово облегчает программирование и стандартизирует взаимодействие между объектами. Кстати, позволяет создавать автоматы. Тоже интересная фича. Ну, оператор, например, новый есть Swith. Операция обмена тоже новая фишка. Распараллеливание с помощью групп.. А выполнение групп с надстрочным значением? Та много.. Вот хотя бы первые три концепции кто б осилил.. B>>Надеюсь я подробно ответил? Если будут вопросы пиши. Всегда рад.
XC>Было бы здорово, опять-таки, ПРИМЕРЫ по КАЖДОМУ пункту этого списка. Вот так — на твоем языке, а вот так — на C++/C#/Java. Сравнение реализаций, преимущества твоей реализации, недостатки существующей.
XC>Только так и никак иначе
Так там есть примеры.
Могу здесь по быстрому. Но, все нюансы (а они не нюансы) будет сложно. Вау.. Здесь не возможно. Скобки и надстрочные значения я здесь не смогу привести. Ну, почему бы не посмотреть примеры в документе? Там все есть... Хотя бы начнем с именования объектов и правил написания текста.. Можно даже пропустить правила описания грамматик. Они в самом начале документа. А потом по порядочку осваивать другие разделы. Я буду отвечать на вопросы.
Re[13]: Вот основные концепции. Затем три первых раздела. Н
Здравствуйте, minorlogic, Вы писали:
M>Здравствуйте, batu, Вы писали:
B>>Здравствуйте, minorlogic, Вы писали:
M>>>А назначение языка то какое? B>>Это часть системы. Язык можно использовать, от создания документов, до написания программ.
M>По аналогии звучит как "инструмент для счастья во всем мире и ремонта холодильников"
С холодильниками будут проблемы. А указаными задачами очень даже справляется. И удобнее чем в частности XML справляестся с единственной задачей. Если интересно, то укажу на принципиальные недостатки XML
Re[4]: А вот вам и новый язык. Зацените. Можно ругать.
Здравствуйте, batu, Вы писали:
B>Здравствуйте, x-code, Вы писали:
XC>>Здравствуйте, batu, Вы писали:
XC>>>>1. Как вы пришли к идее нового языка? Чего вам нехватает в существующих? Каков вообще был ход Вашего мышления, когда вы проектировали этот язык? B>>>Начал с типов и классов. Но это было давно. Net еще не было. Кстати, посмотри. У меня это разные вещи. Класс порождает объекты, а тип-значения. XC>>Вот уже конкретика, поясни НА ПРИМЕРЕ, что да как. В чем разница, что дает разделение понятий и т.д. B>Разница между объектами и значениями (все они объекты мы здесь имеем ввиду объекты-объекты и объекты-значения) принципиальна. Объект может быть только один и равенство объектов означает что это один и тот же объект. Значений может быть сколько угодно и равенство значений это равенство всех свойств разных объектов значений. Отсюда и операция присвоения у объектов это копирование ссылки, а у значения копирование полностью объекта. Есть еще разница в том, что значение выражается текстом или цифрами. Например, Date=1 сентября 1995, Тор=65. Потому определение типов (они создают объекты-значения) оказывают влияние на лексический разбор. И т.д..Вообщем, есть разница, и тебе судить насколько она принципиальна.
Что-то понял, но какой-то неуловимый смысл... Для чего так? Есть константы и переменные. Есть передача по ссылке и передача по значению. Эти понятия можно комбинировать как угодно. Я могу захотеть передать "объект" как по ссылке, так и по значению. Точно так же имею право передать константу по значению, в твоей терминологии это будет уже объект, хранящий значение? В чем здесь новизна?
B>И об этом тоже. Восклицательный знак просто как пример, а так очень его уважаю
И все же, что с восклицательным знаком-то не так?
B>Так там есть примеры. B>Могу здесь по быстрому. Но, все нюансы (а они не нюансы) будет сложно. Вау.. Здесь не возможно. Скобки и надстрочные значения я здесь не смогу привести. Ну, почему бы не посмотреть примеры в документе?
Еще раз: в документе непонятно. Напиши hello world на Lada, и еще пару примеров: реализацию двусвязного списка или очереди, сортировку какую-нибудь... С комментариями, и — повторюсь — со СРАВНЕНИЕМ твоей реализации и существующих.
Я вот дошел до первого примера и уже в ступоре
For I=30 To N {J +:= 1}
им дальше по тексту
В результате работы синтаксического анализатора из последовательности лексем будет создан объект класса For с именем I, который в свою очередь может нуждаться в реализации
а я то думал это обычный цикл с параметром...
Это какая-то попытка запихать инструкции (операторы языка) в парадигму ООП?
Re[6]: А вот вам и новый язык. Зацените. Можно ругать.
B>>И об этом тоже. Восклицательный знак просто как пример, а так очень его уважаю XC>И все же, что с восклицательным знаком-то не так?
Извините, что вмешиваюсь, но недостаток восклицательного знака в Си очевиден: неинтуитивная семантика.
Вот сравните:
Ruby:
if messages.empty? # true - да, список пустой
user.logout! # "опасный" метод, модифицирует состояние объекта. Немного истерично, но в этом хотя бы есть смысл.
C
if (!messages) { // !messages что-это-за-хрень?
user.logout();
}
Идея такова: чтобы читать код на C/Perl нужно знать эти языки; для Python/Ruby часто достаточно знать английский.
Re[6]: А вот вам и новый язык. Зацените. Можно ругать.
Здравствуйте, x-code, Вы писали:
B>>Разница между объектами и значениями (все они объекты мы здесь имеем ввиду объекты-объекты и объекты-значения) принципиальна. Объект может быть только один и равенство объектов означает что это один и тот же объект. Значений может быть сколько угодно и равенство значений это равенство всех свойств разных объектов значений. Отсюда и операция присвоения у объектов это копирование ссылки, а у значения копирование полностью объекта. Есть еще разница в том, что значение выражается текстом или цифрами. Например, Date=1 сентября 1995, Тор=65. Потому определение типов (они создают объекты-значения) оказывают влияние на лексический разбор. И т.д..Вообщем, есть разница, и тебе судить насколько она принципиальна.
XC>Что-то понял, но какой-то неуловимый смысл... Для чего так? Есть константы и переменные. Есть передача по ссылке и передача по значению. Эти понятия можно комбинировать как угодно. Я могу захотеть передать "объект" как по ссылке, так и по значению. Точно так же имею право передать константу по значению, в твоей терминологии это будет уже объект, хранящий значение? В чем здесь новизна?
Не причем здесь новизна. Это классические вещи. Только я четко разделил. Когда есть разные сущности то они и должны быть разными. Присвоение и передачу параметров, это понятно что можно сделать и так и так.Только это чревато. Но вот как с присваиванием быть? Разные знаки делать? Ведь очевидно что суть этих операций разная для класов и типов. А операцию равенства? Для объектов эта операция заключается в равенстве ссылок, а для значений в проверке значения. Вот ты изменил свойство в объекте, например, зарплату или должность.. Объект должен гарантировано остаться тем же самым. И совсем другое дело если ты в объекте-дате изменил месяц! Получился ДРУГОЙ ОБЪЕКТ! Одинаковых объектов-значений могут существовать тысячи одновременно, а объект один и навсегда.
B>>И об этом тоже. Восклицательный знак просто как пример, а так очень его уважаю XC>И все же, что с восклицательным знаком-то не так?
Да не задрачивай.. B>>Так там есть примеры. B>>Могу здесь по быстрому. Но, все нюансы (а они не нюансы) будет сложно. Вау.. Здесь не возможно. Скобки и надстрочные значения я здесь не смогу привести. Ну, почему бы не посмотреть примеры в документе?
XC>Еще раз: в документе непонятно. Напиши hello world на Lada, и еще пару примеров: реализацию двусвязного списка или очереди, сортировку какую-нибудь... С комментариями, и — повторюсь — со СРАВНЕНИЕМ твоей реализации и существующих.
XC>Я вот дошел до первого примера и уже в ступоре XC>
XC>For I=30 To N {J +:= 1}
XC>
XC>им дальше по тексту XC>
В результате работы синтаксического анализатора из последовательности лексем будет создан объект класса For с именем I, который в свою очередь может нуждаться в реализации
XC>а я то думал это обычный цикл с параметром...
XC>Это какая-то попытка запихать инструкции (операторы языка) в парадигму ООП?
Рассказываю. Когда ты пишешь буквы они тоже объекты. Потом из букв сконструировал слово (в нашем примере For) так вот как слово это самостоятельный объект и другого класса чем буквы, т.е. со своими собственными свойствами. Если у букв есть шрифты, размер и прочее (кстати, я категорически против что б буквы имели свойство язык), а у слова свои свойства как у самостоятельного объекта воспринимаемого как единое целое а не то из чего оно состоит. Класс и свойства этого объекта (создание объекта For класса "Lexem" ) определяется при лексическом анализе. Как и все остальные лексемы. А уже при трансляции в синтаксическом анализаторе из последовательности лексем и знаков согласно синтаксису создается объект класса For. Да, это такой же объект. Вот и если речь идет о программе то создается объекты-инструкции. Это еще один тип объектов плюс к объектам-значениям.
Дальше совсем просто. Если мы хотим создать форму BB то так и пишем Form BB. Так в результате трансляции создастся объект этого класса.
А теперь проблема!
Int I=10 что создаст при трансляции? Обычно в языках в такой форме синтаксиса создается (скрытая от глаз) инструкция срабатывающая во время выполения (а не трансляции), и создающая динамически целую переменную где-то в выделеной области памяти.
У меня создается именно целое значение =10 в этом месте. Для того, что бы во время выполнения создать такое значение (или такие значения если это в классе и есть вариант одновременного вызова) необходимо иметь еще одну инструкцию которую необходимо применить к этому объекту для динамического создания. И эта инструкция есть. Даже три! New, Dim и Var. Т.е. если мы хотим создать динамичекий объект о время выполнения это выглядит так New Int I=10.
Re[6]: А вот вам и новый язык. Зацените. Можно ругать.
XC>Это какая-то попытка запихать инструкции (операторы языка) в парадигму ООП?
Да. Кстати, мои поздравления. Ты первый на планете, который дошел до такого уровня вопросов. Так и получается если мы хотим создать базу данных товара на складе, то определяем класс товара (Модель) , и просто создаем объекты-товары
Сlass Модель
{
Dim Int(Размер, Цена)
Здравствуйте, Temoto, Вы писали:
T>Идея такова: чтобы читать код на C/Perl нужно знать эти языки; для Python/Ruby часто достаточно знать английский.
Может быть... Но лично я не люблю, когда языки программирования пытаются приблизить к английскому. Получается неизменно паскаль.
Синтаксис — это важная составляющая языка, и ее важность в том, чтобы программист (именно программист, а не домохозяйка!) мог легко читать исходники на других языках, и быстро в них разбираться.
Есть традиционный, сложившийся синтаксис, не один десяток языков, на которых восклицательный знак это логическое отрицание. Это ни хорошо и ни плохо, это просто есть и все Стандарт де-факто. Зачем придумывать что-то еще?
Re[7]: А вот вам и новый язык. Зацените. Можно ругать.
Здравствуйте, batu, Вы писали:
B>>>Разница между объектами и значениями (все они объекты мы здесь имеем ввиду объекты-объекты и объекты-значения) принципиальна. Объект может быть только один и равенство объектов означает что это один и тот же объект. Значений может быть сколько угодно и равенство значений это равенство всех свойств разных объектов значений. Отсюда и операция присвоения у объектов это копирование ссылки, а у значения копирование полностью объекта. Есть еще разница в том, что значение выражается текстом или цифрами. Например, Date=1 сентября 1995, Тор=65. Потому определение типов (они создают объекты-значения) оказывают влияние на лексический разбор. И т.д..Вообщем, есть разница, и тебе судить насколько она принципиальна.
B>Не причем здесь новизна. Это классические вещи. Только я четко разделил. Когда есть разные сущности то они и должны быть разными. Присвоение и передачу параметров, это понятно что можно сделать и так и так.Только это чревато. Но вот как с присваиванием быть? Разные знаки делать? Ведь очевидно что суть этих операций разная для класов и типов. А операцию равенства? Для объектов эта операция заключается в равенстве ссылок, а для значений в проверке значения. Вот ты изменил свойство в объекте, например, зарплату или должность.. Объект должен гарантировано остаться тем же самым. И совсем другое дело если ты в объекте-дате изменил месяц! Получился ДРУГОЙ ОБЪЕКТ! Одинаковых объектов-значений могут существовать тысячи одновременно, а объект один и навсегда.
В С++ есть операторы точка, стрелка, два двоеточия, для РАЗНЫХ случаев, но смысл один — "accessor", доступ к внутренностям составного объекта по имени. В C# и Java благополучно это убрали, и ИМХО правильно сделали.
А ты предлагаешь разделить абстракцию присваивания на две части. И бедные программеры опять будут думать "ну какой-же оператор здесь применить?"
XC>>Это какая-то попытка запихать инструкции (операторы языка) в парадигму ООП? B>Рассказываю. Когда ты пишешь буквы они тоже объекты. Потом из букв сконструировал слово (в нашем примере For) так вот как слово это самостоятельный объект и другого класса чем буквы, т.е. со своими собственными свойствами. Если у букв есть шрифты, размер и прочее (кстати, я категорически против что б буквы имели свойство язык), а у слова свои свойства как у самостоятельного объекта воспринимаемого как единое целое а не то из чего оно состоит. Класс и свойства этого объекта (создание объекта For класса "Lexem" ) определяется при лексическом анализе. Как и все остальные лексемы. А уже при трансляции в синтаксическом анализаторе из последовательности лексем и знаков согласно синтаксису создается объект класса For. Да, это такой же объект. Вот и если речь идет о программе то создается объекты-инструкции. Это еще один тип объектов плюс к объектам-значениям. B>Дальше совсем просто. Если мы хотим создать форму BB то так и пишем Form BB. Так в результате трансляции создастся объект этого класса.
ИМХО, ты как-то неуловимо путаешь этапы компиляции и выполнения программы. При лексическом анализе в классическом понимании этого слова не происходит ничего, кроме того что поток исходного текста программы разбивается на лексемы, просто для удобства дальнейшего синтаксического анализа.
B>А теперь проблема! B>Int I=10 что создаст при трансляции? Обычно в языках в такой форме синтаксиса создается (скрытая от глаз) инструкция срабатывающая во время выполения (а не трансляции), и создающая динамически целую переменную где-то в выделеной области памяти. B>У меня создается именно целое значение =10 в этом месте. Для того, что бы во время выполнения создать такое значение (или такие значения если это в классе и есть вариант одновременного вызова) необходимо иметь еще одну инструкцию которую необходимо применить к этому объекту для динамического создания. И эта инструкция есть. Даже три! New, Dim и Var. Т.е. если мы хотим создать динамичекий объект о время выполнения это выглядит так New Int I=10.
Не понял в чем проблема.
Ты предлагаешь 'int i=10' сделать объявлением константы, не порождающим никакого кода? А смысл? Чем это отличается от конструкции с макросами на том же си?
#define I 10
int i = I;
Re[6]: А вот вам и новый язык. Зацените. Можно ругать.
Здравствуйте, x-code, Вы писали:
XC>Здравствуйте, batu, Вы писали:
B>>Не причем здесь новизна. Это классические вещи. Только я четко разделил. Когда есть разные сущности то они и должны быть разными. Присвоение и передачу параметров, это понятно что можно сделать и так и так.Только это чревато. Но вот как с присваиванием быть? Разные знаки делать? Ведь очевидно что суть этих операций разная для класов и типов. А операцию равенства? Для объектов эта операция заключается в равенстве ссылок, а для значений в проверке значения. Вот ты изменил свойство в объекте, например, зарплату или должность.. Объект должен гарантировано остаться тем же самым. И совсем другое дело если ты в объекте-дате изменил месяц! Получился ДРУГОЙ ОБЪЕКТ! Одинаковых объектов-значений могут существовать тысячи одновременно, а объект один и навсегда.
XC>В С++ есть операторы точка, стрелка, два двоеточия, для РАЗНЫХ случаев, но смысл один — "accessor", доступ к внутренностям составного объекта по имени. В C# и Java благополучно это убрали, и ИМХО правильно сделали. XC>А ты предлагаешь разделить абстракцию присваивания на две части. И бедные программеры опять будут думать "ну какой-же оператор здесь применить?"
Не придумывай за меня. В этом смысле я предлагаю оставить один оператор присваивания, смысл которого будет зависить от классов объектов. Причем весьма логично. Но, дальше таки будет два оператора присваивания. Смысл их расскажу позже, по мере усваивания материала. С классами это не связано.
B>>Рассказываю. Когда ты пишешь буквы они тоже объекты. Потом из букв сконструировал слово (в нашем примере For) так вот как слово это самостоятельный объект и другого класса чем буквы, т.е. со своими собственными свойствами. Если у букв есть шрифты, размер и прочее (кстати, я категорически против что б буквы имели свойство язык), а у слова свои свойства как у самостоятельного объекта воспринимаемого как единое целое а не то из чего оно состоит. Класс и свойства этого объекта (создание объекта For класса "Lexem" ) определяется при лексическом анализе. Как и все остальные лексемы. А уже при трансляции в синтаксическом анализаторе из последовательности лексем и знаков согласно синтаксису создается объект класса For. Да, это такой же объект. Вот и если речь идет о программе то создается объекты-инструкции. Это еще один тип объектов плюс к объектам-значениям. B>>Дальше совсем просто. Если мы хотим создать форму BB то так и пишем Form BB. Так в результате трансляции создастся объект этого класса.
XC>ИМХО, ты как-то неуловимо путаешь этапы компиляции и выполнения программы. При лексическом анализе в классическом понимании этого слова не происходит ничего, кроме того что поток исходного текста программы разбивается на лексемы, просто для удобства дальнейшего синтаксического анализа.
Так вот что-то же происходит! Лексемы таки образуются! А ведь это объекты! И не только для синтаксического анализа. Вполне реально для трансляции нам необходимо будет анализировать свойства этих объектов. Например, у меня нет требования уникальности имени. А для некоторых классов уникальнность только внутри класса. Да и текст от имен надо будет отличать. А это все в свойствах лексемы! Почему, например, нельзя одинм именем назвать и класс и объект? Ведь по положению в синтаксисе мы вполне можем разобраться. А если есть неоднозначность, то необходимо указать. Как? Да изменением свойств вот этой самой лексемы! В обычном языке один и тот же текст может являться и глаголом и существительным. Классом и объектом! Например: "Каждый мужчина должен построить дом...." здесь "дом" в смысле класса объектов. А в фразе "Вот дом в котором я живу." слово дом применяется как объект. И по английски "Cup of tee" и "Drink tea" tea- в первом случае объект, а во втором класс.
Короче лексемы нам очень даже нужны как объекты, и нужен доступ для редактирования (т.е. для изменения их свойств) и анализа свойств лексемы. Анализом, занимается, как ты и сказал, синтаксический анализатор. И, вообще, вдумайся. Ты же текст воспринимаешь не в буквах, а в лексемах. Ну, один в один как синтаксический анализатор.
B>>А теперь проблема! B>>Int I=10 что создаст при трансляции? Обычно в языках в такой форме синтаксиса создается (скрытая от глаз) инструкция срабатывающая во время выполения (а не трансляции), и создающая динамически целую переменную где-то в выделеной области памяти. B>>У меня создается именно целое значение =10 в этом месте. Для того, что бы во время выполнения создать такое значение (или такие значения если это в классе и есть вариант одновременного вызова) необходимо иметь еще одну инструкцию которую необходимо применить к этому объекту для динамического создания. И эта инструкция есть. Даже три! New, Dim и Var. Т.е. если мы хотим создать динамичекий объект о время выполнения это выглядит так New Int I=10.
XC>Не понял в чем проблема. XC>Ты предлагаешь 'int i=10' сделать объявлением константы, не порождающим никакого кода? А смысл? Чем это отличается от конструкции с макросами на том же си? XC>
XC>#define I 10
XC>int i = I;
XC>
Совершенно верно, 'int i=10' не порождает никакого кода (в Ладе), в том смысле как ты его понимаешь. Порождается объект с именем I класса Int со значением 10. И больше ничего. Потому что вот это присвоение (помнишь мы о двух присвоениях говорили?) присваивает значение 10 свойству Value объекта класса Int с именем I. Есть двоичное представление объекта, и вот там где в этом представлении должно находиться значение свойства Value будет находиться значение 10, а там где должно находиться имя объекта будет находиться значение I. Более того мы так и сохраним это значение или много таких значений которые можно и проще создать просто набрав числ "10". Имени не будет. А результат будет тот же. Теперь вспомни, что типы порождают объекты-значения и тем оказывают влияние на лексический анализ. Вот оно это влияние! Type Int влияет на лексический анализ так, что набрав значение "10" при лексическом анализе создается объект этого класса с набраным значением.
А вот такое вот присвоение
I:=10 перед тем как, создаст объект-значение 10 создаст ссылку (там тоже есть варианты адресации) на объект с именем I и сформирует объект-инструкцию которая при выполнении присвоит объекту по этой ссылке значение 10, хранящееся здесь же.
Re[9]: А вот вам и новый язык. Зацените. Можно ругать.
Здравствуйте, batu, Вы писали:
B>Так вот что-то же происходит! Лексемы таки образуются! А ведь это объекты! И не только для синтаксического анализа. Вполне реально для трансляции нам необходимо будет анализировать свойства этих объектов. Например, у меня нет требования уникальности имени. А для некоторых классов уникальнность только внутри класса. Да и текст от имен надо будет отличать. А это все в свойствах лексемы! Почему, например, нельзя одинм именем назвать и класс и объект? Ведь по положению в синтаксисе мы вполне можем разобраться. А если есть неоднозначность, то необходимо указать. Как? Да изменением свойств вот этой самой лексемы! В обычном языке один и тот же текст может являться и глаголом и существительным. Классом и объектом! Например: "Каждый мужчина должен построить дом...." здесь "дом" в смысле класса объектов. А в фразе "Вот дом в котором я живу." слово дом применяется как объект. И по английски "Cup of tee" и "Drink tea" tea- в первом случае объект, а во втором класс. B>Короче лексемы нам очень даже нужны как объекты, и нужен доступ для редактирования (т.е. для изменения их свойств) и анализа свойств лексемы. Анализом, занимается, как ты и сказал, синтаксический анализатор. И, вообще, вдумайся. Ты же текст воспринимаешь не в буквах, а в лексемах. Ну, один в один как синтаксический анализатор.
Ты ОПРЕДЕЛЕННО путаешь процесс компиляции и процесс исполнения программы
Изучи как осуществляется процесс компиляции. Разберись с этапами.
Лексемы образуются при лексическом анализе. Это просто разбиение текста на кусочки, не более того! Каждому кусочку ставится в соответствие код типа из множества {Идентификатор, Число, Строка, Оператор, Разделитель, Комментарий}. И для операторов и ключевых слов — еще одно число, внутренний номер оператора/ключевого слова. Числа преобразуются в бинарную форму, строки преобразуются с учетом escape-последовательностей, комментарии и разделители выкидываются. И все!
То, что ты описываешь, отдаленно напоминает описание процесса компиляции программы, при этом в твоем описании все этапы перемешаны совершенно немыслимым образом.
Какое это отношение имеет к "новому языку программирования" — вообще непонятно.
В общем, почитай ту же книгу Дракона что-ли
Re[4]: А вот вам и новый язык. Зацените. Можно ругать.
Здравствуйте, x-code, Вы писали:
XC>Было бы здорово, опять-таки, ПРИМЕРЫ по КАЖДОМУ пункту этого списка. Вот так — на твоем языке, а вот так — на C++/C#/Java. Сравнение реализаций, преимущества твоей реализации, недостатки существующей.
Сам уже жду хоть чего-то. А то все одни абстракции с обещаниями сделать что-то реальное за пару месяцев. При этом ни одного нормального примера, который бы показал хоть минимальное преимущество перед существующими языками, я не увидел.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[7]: А вот вам и новый язык. Зацените. Можно ругать.
Здравствуйте, Temoto, Вы писали:
T>Извините, что вмешиваюсь, но недостаток восклицательного знака в Си очевиден: неинтуитивная семантика. T>Вот сравните:
T>Ruby: T>
T>if messages.empty? # true - да, список пустой
T> user.logout! # "опасный" метод, модифицирует состояние объекта. Немного истерично, но в этом хотя бы есть смысл.
T>
А отрицание условия будет if !messages.empty?
Здесь Руби придерживается той же традиции.