LINUX.ORG.RU
ФорумTalks

Бинарный исходный код.

 , , ,


0

3

А что, если бы исходный код хранился в бинарном виде? Например, какой-нибудь if хранился бы в виде: <байт для обозначения, что дальше идёт if> <размер блока кода (8 байт)> <блок кода, естественно, тоже бинарный>.

Это могло бы значительно увеличить скорость компиляции (так как не надо парсить текст) и уменьшить размер исходных кодов. У программистов на таком языке не было бы споров по поводу стиля кода: каждый мог бы настроить редактор по своему.

Из минусов я вижу только необходимость специального редактора для такого кода.

Интересно, что думают ЛОРовцы по этому поводу? Есть ли какие-нибудь ещё недостатки?

Deleted

Из минусов я вижу только необходимость специального редактора для такого кода.

Но это, конечно, пустяки.

Не нужно.

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

Упрощение процесса компиляции - тоже не пустяки.

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

Но такое нигде не используется. Речь о том, чтобы хранить вместо исходного текста уже готовое дерево синтаксиса в бинарном виде.

Deleted
()

Пятница в ночь на среду?

takino ★★★★★
()

Это могло бы значительно увеличить скорость компиляции (так как не надо парсить текст)

Про «значительно» ты загнул.

Deleted
()

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

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

Но такое нигде не используется.

Java, C#. Я частенько достаю код из готового бинаря, часто даже с оригинальными именами переменных и классов. Достаточно добавить туда хранение комментариев, и получится то, что ты хочешь.

Sadler ★★★
()

Такой подход использовался в интерпретаторе Basic ПК Spectrum. Операторы, кстати, набирались одной кнопкой.

German_1984 ★★
()

Через hex editor вполне может заработать. Более того, те же программируемые калькуляторы для верификации вводимых данных также отображают вводимое в своих кодах - http://mk.semico.ru/tabl2.htm .

saahriktu ★★★★★
()

А что, текст изначально не бинарен? Или как по твоему текстовые токены парсятся? Ну да, бывает больше одного чара, и что?

deep-purple ★★★★★
()

Эмм... оно когда-то так и было и вместо этого придумали ЯП. Сегодня вобщем тоже можно использовать hex команды вместо ассемблерных мнемоник.

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

при текущих оптимизациях компиляторов

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

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

Забыл добавить, это потребуется внедрить во все редакторы. И пока не понятно как это отразится на скорости открытия/сохранения проекта с тучей файлов/кода.

yurikoles ★★★
()

Поздравляю, ты изобрёл Spectrum BASIC. Так что звиняй друг, но лет на 40 ты с таким предложением опоздал.

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

Но такое нигде не используется.

facepalm.jpg
Ну собственно тебе уже тут сказали как ты не прав.

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

Отступы пускай настраиваются, а выравнивание не сделать.

$examleObject->methodOne()
             ->methodTwo()
             ->methodThree()
             ->methodFour();
Будет слеплено в одну строку.

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 1)

И как это grepать?

Вообще, есть языки, страдающие подобным идиотизмом. Smalltalk, например.

Miguel ★★★★★
()

Интересно, что думают ЛОРовцы по этому поводу?

В 2015-м экономить на размерах текстового файла никому не интересно. С производительностью тоже спорный вопрос. За счёт чего будет выигрыш, за счёт большего времени на сохранение и открытие файлов? Будет ли он вообще заметен? Без пруф оф концепт с бенчмарками идея сама по себе плохая.

Gary ★★★★★
()

Ну, из недостатков - необходимость редактора для просмотра/редактирования кода.

А если у нас специализированный редактор, то можно пойти еще дальше. И вообще не работать с текстовым представлением программы, а модифицировать сам аст.

И diff файлов в таком случае тоже был-бы читаемее. Т.к. он определял бы только реально изменненные конструкции, а не изменение форматирования, например.

Проблема в том, что сложно реализовать удобный для ввода/редактирования редактор.

Но такая мысль посетила не только тебя одного и я знаю людей, которые даже пытаются все это дело реализовать.

aiive
()

Лет 16 назад будучи школотой баловался QBasic. Там исходники, если я правильно помню, хранились в бинарном виде.

omnomnomnus
()

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

upcFrost ★★★★★
()
Ответ на: веяние времени от greenman

2015. Большинство по прежнему думают, что у СистемД бинарные логи, когда они открываются любым текстовым редактором и единственное, что при этом теряется - продвинутая навигация journald по ним

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

Я вот тоже раньше так думал. Но потом решил проверить. Для сишечки легко можно получить 75% времени, потраченного на парсинг. Правда, здесь, конечно, можно съехать на то, что хедеры и темплейты — говно, надо использовать правильный язык™, PCH, и прочую лабудень.

ilammy ★★★
()

Это могло бы значительно увеличить скорость компиляции

Нет. Лексический разбор исходников времени почти не занимает.

У программистов на таком языке не было бы споров по поводу стиля кода

Споры по поводу стиля кода произрастают из потребности, чтобы код легко читался человеками и легко понимался человеками. Твой язык ничего для решения этой проблемы не предлагает.

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

2015. Большинство по прежнему думают, что у СистемД бинарные логи, когда они открываются любым текстовым редактором

2015. Некоторые до сих пор думают, что текстовые редакторы не умеют открывать бинарные файлы.

tailgunner ★★★★★
()
Ответ на: комментарий от deep-purple
sizeof(SOME_INTEGER_CONSTANT) != sizeof("some textual source code")


Текстовые потоки данных и бинарные - это совсем разные вещи. Как гласит философия Unix, «Пишите программы, которые бы поддерживали текстовые потоки, поскольку это универсальный интерфейс.» Однако, такой подход тормознее бинарных потоков.

AST или что-то подобное в качестве исходного кода - это совсем не байткод (в контексте, например, JVM) или тем более не текст.

Кроме возможности поддержки различных текстовых редакторов, нет причины (ИМХО) хранить код в тексте, так как он подчиняется особым строгим правилам и не использует все комбинации, которые можно записать в тексте.

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

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

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

Не, я (тоже образно) про типа такое:

strncmp(IF_TOKEN, "if", 2)
А вообще исходники не нужно переводить в какой-то там тобой придуманый бинарный вид для хранения(?) или ускорения конпеляции(?), т.к. оно те же яйцы тока в профиль.

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

deep-purple ★★★★★
()

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

А как грепать и дифф снимать ты подумал?

Pythagoras ★★
()
Последнее исправление: Pythagoras (всего исправлений: 1)
Ответ на: комментарий от Pythagoras

Редактор не транслирует туда-сюда. То, что видит программист - это не текст, а элементы графического интерфейса, расставленные после интерпретации бинарника.

Поиск и дифф нужны тоже специальные, об этом я не забыл.

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

Редактор не транслирует туда-сюда.

Подумай ещё раз. Природу не обманешь. Что бы он ни делал - это будет трансляцией туда-сюда на каком-нибудь из этапов.

То, что видит программист - это не текст, а элементы графического интерфейса

Лицопальма.

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

Лицопальма.

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

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

То, что видит программист - это не текст, а элементы графического интерфейса

Лицопальма.

Я имел в виду, что не происходит трансляции туда-сюда, программист бы редактировал поля, а не гибкий текст.

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