Модераторы: powerfox, ZeeLax

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> символьный язык программирования 
:(
    Опции темы
GrayCardinal
Дата 12.6.2011, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 18
Всего: 58



   Символьный язык программирования.

        Преамбула.
    В этом маленьком тексте я попробую описать идею, которая у меня родилась 
буквально вчера. Просьба сильно не пинать и, по возможности воздержаться от 
критики, если тема покажется Вам не интересной. Конечно, в дальнейшем без 
критики будет не обойтись, но на данном этапе она может только помешать.
    Оговорка. Каких-либо других наработок, кроме идей, на данный момент нет.
все будет пережевываться не одну тыщу раз, прежде чем появится то, что можно будет
действительно "заюзать".
    Зачем мне это ? Ни зачем. Но работать над проектом я собираюсь все свободное 
время. Это, для меня, действительно интересно.

        Немного о brainfuck
    Кратко рассмотрим язык под названием "brainfuck". Суть его, кто еще не в курсе - 
написание последовательности символов, которая выполняет какое-то одно действие. К сожалению
он имеет некоторые недостатки и недоработки. Данный язык может выполнять только примитивные 
операции и имеет мизерный набор символов. Максимум, что Вы можете сделать на нем - это вывод
приветствия ("Hello world !"). Однако, замечу, если бы для brainfuck была нормальная среда
разработки, его можно было бы использовать. Скажем огромная команда echo "Hello World" 
занимала бы не сотни строк кода на Си, а несколько символов на brainfuck. Подытожу недостатки 
brainfuck. Первое и самое главное - не серьезный подход к языку. Что и следует из названия.
Отсутствие среды разработки. По идее, все что надо для этого языка - редактор и симулятор.
Наличие встроенного симулятора в данном случае критично, ибо иначе для отладки приходилось бы 
вызывать не очень быструю команду, которая бы выполняла код... Так же к недостаткам нужно отнести
абсолютную минималистичность и "низкоуровненность".
    
        Проблемы современных языков.
    Во всех известных языках программирования используется такой подход. Есть команды.
которые состоят из слов. Прчем слова состоят из крайне мизерного запаса английских букв. Для 
команд приходится подбирать соответствующее команде слово. Это работает, если у вас пара тыщ строк
 кода. Это работает и дальше, но в какой-то момент наступает полный абздец. Английских слов просто 
начинает нехватать. Плюс трудно подобрать "правильнрое" слово. И пошло... Сначала команды из нескольких
слов, потом префиксы к командам. Потом документация по командам. Потом документация по префиксам....
В итоге получаем код, в котором надо разбираться самому разработчику.
    Следующие проблемы - необходимость "анализа" программы и компиляция в машинный код. Да,
программа после этого выполняется очень быстро, но в этом есть один очень неприятный момент. Всё это 
занимает драгоченное время программиста. Да и "отладка" кода порой убивает времени на порядок больше,
чем требовалось для написания самого кода.

        Что я предлагаю ?
    Я предлагаю разработать систему программирвония, в которой используются комбинации символов не 
одного английского языка, а всего спектра utf-8 символов. Исключая символы, которые трудны для восприятия.
К примеру - символы арабского, китайского, японского и аналогичных языков.
    К чему сведется программирование в итоге ? Программист будет выбирать нужный символ (при необходимости
читая документацию) и вставлять его в программу. Вывод сообщения вроде "Hello World" будет сводится к поиску 
(на первых порах) симовола-команды вывода текста, вставки его в программу, и дописывания нужной фразы "Hello World !"
    

Пока все,
Олег Пучинин.

Это сообщение отредактировал(а) GrayCardinal - 12.6.2011, 17:10


--------------------
PM MAIL WWW   Вверх
Sartorius
Дата 12.6.2011, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



Не совсем понятно какие у этого плюсы, кроме компактных сорцев? Может их сжимать просто? Хотя сорцы обычно и так немольшие, кроме асма
PM MAIL ICQ   Вверх
GrayCardinal
Дата 12.6.2011, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 18
Всего: 58



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

Это сообщение отредактировал(а) GrayCardinal - 12.6.2011, 18:16


--------------------
PM MAIL WWW   Вверх
Фантом
Дата 12.6.2011, 18:19 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


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

Репутация: 1
Всего: 49



Как бы так помягче выразиться... идея несколько неудачна, причем этот факт давно экспериментально проверен. Посмотрите на APL.
PM   Вверх
GrayCardinal
Дата 12.6.2011, 18:26 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 18
Всего: 58



Фантом, 
Отклонено smile


--------------------
PM MAIL WWW   Вверх
bilbobagginz
Дата 12.6.2011, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

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



GrayCardinal, привет.
Идея интересная, но:
1) самая большая проблема программирования - не ограничения я.п. в ракурсе длинны команд, или ограниченности именного пространства. самая большая проблема программирования обычно находится между стулом и клавиатурой ;-)
2) существует несколько инoй интересный метод программирования, который по-моему перпендикулярен родному языку программиста (см. MIT Scratch)
3) с т.з. координации работы разработчиков, по-моему нет более удобного метода, чем словесное или как минимум письменное (ужасно хуже первого) общение, поэтому для нечитабельных кусков кода - есть комменты.
4) для непонятно написанного кода существует код-ревью. это делается сразу после или сразу ДО коммитов. Ессно делается более крутым чем ты девелопером (я конечно понимаю, что разрабатывая код самому, в одиночку, очень трудно расщепить личность, и сделать себе самому код ревью. Это причина обычно очень медленного роста программистов-одиночек)
5) очень удивило от тебя, т.к. ты вроде бы и с руби и с питоном имел какое-то трение... неужели с т.з. читаемости кода они тебя не устроили ? и с т.з. расширяемости языка.... ?
6) стоит как-то проверить насколько широта диапазона разрешенных символов я.п. (и разрешенных слов) воздействует на вычислительную сложность парсинга (и его время) 
7) удачи!



Это сообщение отредактировал(а) bilbobagginz - 12.6.2011, 20:41


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
kosmonaFFFt
Дата 13.6.2011, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А как насчет таких платформ как Java и .NET, где в коде можно использовать символы юникода?
Хотя я, после просмотра кода одной программки, за такое руки бы поотрывал, так как там были намешаны идентификаторы типа
newПокупатель и текущийDbConnection... Понятно что у автора с мозгами не лады, но все равно осадочек остался... smile


--------------------
user posted image
PM MAIL ICQ   Вверх
GrayCardinal
Дата 13.6.2011, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 18
Всего: 58



kosmonaFFFt, 
Вы говорите я системах, где можно использовать _слова_ состоящие из любых букв. Я предлагаю (практически) полностью забить на слова и использовать символы. Везде. В командах, именах(символах) переменных etc. То есть речь идет о принципиально другом подходе.


--------------------
PM MAIL WWW   Вверх
GrayCardinal
Дата 13.6.2011, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 18
Всего: 58



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


--------------------
PM MAIL WWW   Вверх
GrayCardinal
Дата 15.6.2011, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 18
Всего: 58



            На чем будет реализована система.

    Прояснился следующий аспект разработки системы символьного языка. Сам интерпретатор будет разрабатываться на GoLang.  Выбор пал на него по нескольким причинам. Во-первых он быстрый и компилируемый. Плюс программы Гоу линкуются статически. Т.е. Вы сможете запускать интерпретатор сразу после загрузки ядра Linux. Так же язык Гоу достаточно высокоуровненный, что даст интерпретатору символьного языка те же свойства. На символьном языке можно будет писать как низкоуровневые так и высокоуровневые приложения с одинаковой легкостью. 
    Сама среда разработки будет писаться на Qt4. Просто на Qt4 можно сделать все что нужно. В среде не будет своего редактора. Будет использоваться любой доступный редактор от Vi и до LibreOffice. Взаимодействие среды с редактором будет осуществляться — через удаленное управление для Gvim и через dbus для остальных редакторов, поддерживающих эту шину (а это почти все).

Пока все.
Ваш.
Олег.


--------------------
PM MAIL WWW   Вверх
bilbobagginz
Дата 15.6.2011, 23:45 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

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



что самое страшное - что этот Олег сядет и сделает.
 smile  smile 


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
1000000dollars
Дата 16.6.2011, 09:09 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 6.10.2007

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



bilbobagginz, и дай бог, чтобы у него не было администртивного ресурса для продвижения написанного...
PM MAIL   Вверх
GrayCardinal
Дата 16.6.2011, 09:11 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 18
Всего: 58



1000000dollars, 
Надо будет - сами продвинут...


--------------------
PM MAIL WWW   Вверх
bilbobagginz
Дата 16.6.2011, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

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



GrayCardinal, 
теорема:
использование всего диапазона символов UTF8 в качестве символов языка не возможно при существовании схожих символов разных регистров (тут регистр = диапазон карактер сета какого-то языка "Х")

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

Уникальность переменных нужна для:
  • программиста, для понимания и поддержки кода
  • программы-переводчика текста программы в запускаемый код/данные (т.е. интерпретера/компилятора)
все свыше - это "Дано:"

При использовании более чем одного регистра юникода с одинаковыми по внешнему виду символами, 
свойство внешней уникальности имен теряется.
Человек по внешнему виду не знает какой символ у него перед глазами: 
о из латинницы, или кириллицы? 
п из кириллицы или из греческого алфавита ?
Естественно, при возможности ввода таких внешне схожих символов можно получать переменные, 
которые выглядят одинаково, но по сути (и strncmp()) разные.

Но к ступору и истерике это приводит не компьютер, а человека.

Напр. понять из ошибки, что переменная "кака" != "кaкa" (слева версия с обеими 'а' из кириллицы, а справа - буквы 'а' из латинницы)
практически ... невозможно (можно, но мы же не будем, в процессе работы преобразовывать имя каждой перменной в массив байтов!)

Более того, такого рода ошибки будут вноситься, и отнимать не мало времени в отладке.

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

Поэтому придется остаться с ограниченным списком символов. 
Что интересно - как раз похожие регистры (напр. европейских языков) мешать нельзя. 
Можно мешать только очень внешне разные, напр. русский+китайский+иврит+арабский.
даже греческий не используешь, т.к. там есть буквы, похожие на кириллицу.

Грубо говоря "что и требовалось доказать".
(в математике обозначается черным квадратиком):
■

Это сообщение отредактировал(а) bilbobagginz - 17.6.2011, 10:10


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
GrayCardinal
Дата 17.6.2011, 02:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 18
Всего: 58



bilbobagginz, 
Благодарю что подключился smile (осмысливаю вышесказанное)

■


Это сообщение отредактировал(а) GrayCardinal - 17.6.2011, 02:16


--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Клуб юнуксоидов"
powerfox
ZeeLax
nickless

Что такое клуб юнуксоидов?

Это место более свободного общения специалистов и любителей *NIX систем.


Новичкам: Этот раздел предназначен в основном именно для общения а не решения проблем.


Правила всего раздела Linux/UNIX сюда не распространяются, но здесь имеются свои правила:


  • Оскорбления запрещены.
  • Holy wars разрешены, но в небольших размерах. Если вы создаёте что-то уровня Windows vs. Linux, то постите это в Религиозных войнах, пожалуйста.
  • Если вы хотите выставить здесь какое-либо своё творение - милости просим.
  • За интересные новости, интересные статьи, высказывания и юмор (в тему) + в репу.

Короче, по репе получите по полной программе ;-) Happy hacking!



Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

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


 




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


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

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