Виктор Кон, . . . 25 октября 2024 года, . . . http://kohnvict.narod.ru
Я записал в сети ВК серию коротких рассказов о программировании на моем языке. Но не все смотрят мои посты в сети ВК. И в данном документе я собрал их все вместе, сохранив номера. Здесь нет конкретного описания языка, это скорее реклама и первичная информация, стимулирующая мотивацию его использовать.
[(< 1 >)]
Я немного переписал сайт о новой версии своей программы, которая условно называется ACL (advanced command language) или по русски Экол. Название по русски не очень понятное, просто так звучат первые буквы английского названия. Вот ссылка
https://kohnvict.ucoz.ru/vkacl/ACLnews.htm
И я сейчас попробую начать серию коротких рассказов о своем языке программирования. В этом посте будет первый рассказ.
Итак, язык был придуман очень давно, в начале 1990-х годов, примерно тогда же, когда и Питон, а потом Джава. Сейчас Питон очень сильно раскручивают, а Джава в начале 2000-х очень долго была языком номер 1. Но когда я создавал свой язык, я про все это не знал. Я работал на Фортране, графика только недавно появилась. На фортране с ней работать было не удобно. Виндовс и Линукс еще не было. Юникс была, но в России ее никто не знал. Все работали в ДОС на IBM PC/AT-286.
Получилось так, что мой язык в чем-то оказался похож на Питон, а в чем-то был его противоположностью. Потом ситуация изменилась. В системе Виндовс первая версия моей программы интерпретатора языка, которая была написана на фортране и на ассемблере, работать не могла, так как делала много такого, что Виндовс не разрешала. В 2004 году я переписал интерпретатор языка на языке Джава и сейчас это джава-программа, то есть не exe, а jar файл, который сам интерпретируется виртуальной машиной для языка джава (JRE) и может работать сразу в нескольких операционных системах. Тогда же я поменял название языка на ACL.
Язык Джава до сих пор развивается, но я работаю с компилятором 6-й версии, и мне этого хватает, хотя возможность что-то переписать всегда есть. В системе Виндовс JRE -- это уже exe файл. Его даже можно использовать без установки, то есть переносить с компьютера на компьютер или запускать с флешки. При явном использовании ссылок на файлы переносимость программы из одной операционной системы в другую ограничена, но и это можно исправить. А вот использование командных файлов конкретной операционной системы уже исправить не так просто. Сам я работаю в системе Виндовс, так что в этой системе все работает без проблем.
Несколько слов о свойствах языка. Сейчас Питон используют для обучения программированию даже в школах, и поголовно учат студентов. Считается, что это очень простой язык. Это миф. Мой язык намного проще. Его легче устанавливать и им легче пользоваться. Такая задача ставилась с самого начала.
Грамматика языка диаметрально отличается от Питона. Практически во всех языках код программы пишется сразу, а комментарии специально отмечаются. В моем языке наоборот. Специально отмечаются как раз команды языка, а простой текст пишется сразу. Это удобно, когда надо писать документацию о языке. Вы просто пишете текст, а в нем команды. И текст можно читать, а если есть интерпретатор, то и команды можно исполнять.
Почти все современные языки имеют структуру ООП (объектно ориентированный программы). В моем языке таких сложностей нет. В нем есть только команды и процедуры, причем даже это все в очень упрощенном виде. Дело в том, что ООП был придуман для написания очень сложных программ, но новичкам, и тем, кто просто складывает 2+2, это сложно понимать и вовсе не нужно. Хочется просто написать 2+2 = и получить ответ. Как раз именно поэтому Питон для школьников -- сложный язык. Есть у Питона и еще много недостатков, которые являются продолжением недостатков самого автора языка. Это как в Исламе -- нельзя пить водку и есть свинину, Автор запретил, хотя другие люди все это пьют и едят и никто не умирает.
И самое сильное упрощение -- очень ограниченная память. Нельзя создавать массивы. Вся память как в самом компьютере. Пользователь сам ее распределяет как хочет. Это для новичков, возможно, выглядит сложнее в работе, но первоначально все просто. Сложность тут в том, что заботиться о порче памяти должен сам программист. Почему-то от этого отказались и все переложили на сложную работу интерпретатора. Мусор, сборщики мусора. Но чисто не там, где убирают мусор, а там, где не сорят.
Короче, написать первую программу совсем не сложно. Но нужно уметь работать с документацией. Потому что простых команд много, из них можно делать суперкоманды, блоки кода в файлах и так далее. Это как строить дома. Есть кирпичи, из них складывают блоки, из блоков делают отдельные части дома, из домов улицы, кварталы и города. И можно использовать любой уровень, от отдельного кирпича, до городов. Все это возможно даже при очень примитивной грамматике и простой структуре языка. И начинать легко и дальше двигаться не сложно, если знать приемы организации элементов. Конкретные примеры будут показаны позднее.
[(< 2 >)]
Второй рассказ о моем языке программирования. Первый был 2 дня назад. В нем я дал ссылку на сайт программы, откуда ее можно скачать и начать пользоваться. Начальная информация о том как это делать есть в файле (!_readme.txt). Программа написана на языке Джава, а этот язык создавался по правилам системы Юникс (Линукс). И в этой системе очень любят терминал и командные файлы. И новая версия имеет много модификаций внешнего вида, а это зависит от того какой командный файл ее запускает. И запускать надо именно так.
Пока есть три варианта, а именно: (1) Запуск одной программы (2) Запуск готовых программ по списку или произвольному выбору (3) Среда разработки новых программ. Если хотите создавать собственные программы, то надо запускать третий вариант, то есть файл (_rund.bat). Я написал много текстов, в которых показано как начинать, что читать и как работать. Переписывать все это нет смысла. Вот ссылка на полный список материалов о моем языке программирования
https://kohnvict.ucoz.ru/vkacl/info-pro.htm
В этом списке есть не только тексты, которые все опубликованы на моем сайте, но и ссылки на видео, которые я первоначально записал на свой канал Ютуба, а потом продублировал на своем канале Видео в сети ВК после того, как Ютуб стали тормозить.
И даже есть архивы Джава кода интерпретатора. Пользователям это не нужно, но Джава программисты интересовались. И для них это может быть полезно. Тем более, что интерпретатор языка вполне можно дописывать и переписывать, что я до сих пор и продолжаю делать. И я даже написал тексты как это наиболее удобно и легко сделать. Дело в том, что любой интерпретируемый язык очень медленно исполняет большие циклы. Для ускорения работы вводят команды, которые сразу работают с матрицами любой размерности. Но набор таких команд ограничен и иногда возникает необходимость особенно сложные расчеты выполнять таки на языке Джава, а в языке ACL возникает только запуск расчета и получение результата.
Язык как раз и создавался как более удобный и простой способ программирования на языке Джава таких операций, как работа с файлами, создание интерфейса с пользователем, любые операции с текстом, например, автоматическое программирование сайтов, и многих других, где не требуются сложные расчеты с большими циклами. А операции с большими циклами выполняются по вызову как внутренние команды. Так же точно сделан и Питон, и Матлаб и много других интерпретируемых языков программирования. Тут варианты есть только в том, как это все организовать.
Но у интерпретируемого языка есть и свои преимущества, которые отсутствуют в компилируемых языках. Самое, наверно, впечатляющее состоит в том, что любую программу можно сделать как бесконечную. Не все интерпретируемые языки это могут, но мой языке это делает легко. Дело в том, что есть возможность выполнять код, записанный в файл, а файл может быть где угодно, даже в интернете. Так можно было раньше, сейчас из соображений безопасности Джава программам многое запрещают, и не все файлы из интернета они могут прочитать. Но все файлы на компьютере точно могут, пока и это не запретят.
В Питоне такая работа организована через пакеты, которые надо специально заказывать, а в моем языке это делается очень просто и легко. И это, наверно, главное преимущество моего языка. Но за все надо платить. Платой является жесткая память, то есть три больших массива: текстовых символов, целых чисел и рациональных чисел. Эта память доступна любому коду, где бы он ни находился, ее не надо определять или заказывать. Каждая программа использует разные куски этой памяти и сама вычисляет индексы ее элементов. Это накладывает на программиста дополнительную нагрузку и может служить источником ошибок. Но научиться все делать правильно даже полезно. Это развивает умственные способности.
Более того, есть возможность в процессе работы попросить у пользователя написать код либо в окне ввода, либо в текстовом редакторе, и этот код тут же будет исполнен. И даже можно проверить его на ошибки. То есть на самом языке можно создать среду разработки программ и это я уже сделал. Также можно выполнять код из текстового массива, куда его можно записать и преобразовать любым нужным способом. Такого нет ни в Питоне, ни в Джава. Говорят, что Питон интересен тем, что на нем уже написано очень много кода. Ну так на Джава тоже очень много кода написано. Любой такой код можно подставить в программу интерпретатора и использовать в моем языке.
Пока я подключил только пакет кода для работы с pdf файлами. Да и то использую его не в полную силу, а только то, что мне необходимо. Но и этого немало. Можно вынуть из pdf файла любые страницы, обратно соединить несколько страниц в один файл, создать файл презентации из картинок, что-то написать или нарисовать на странице pdf фaйла. Все такие операции уже сделаны в виде готовых программ и для их использования совсем ничего учить не надо. На этом я второй рассказ закончу.
[(< 3 >)]
Третий рассказ о моем языке программирования. Второй был 2 дня назад. Вчера закончилась очередная конференция по моей специальности (когерентная рентгеновская оптика). Она, как и раньше у организаторов этой конференции, проходила в смешанном зал-интернет формате. Организаторами является очень продвинутая лаборатория БФУ имени Канта в Калининграде. Лаборатория называется МНИЦ (международный научно-исследовательский центр) и в общем-то это название оправдано хотя бы тем, что руководитель этого центра живет во Франции, хотя и вполне русский человек. Наверно и паспорт имеет русский. Во всяком случае раньше имел, когда я мог об этом знать. И как раз по этой причине у них очень хорошо развито общение по интернету. Я сам этим летом три раза выступал у них на семинаре из своей квартиры в Москве.
Но вот на конференции были разные люди и некоторые докладчики онлайн испытывали сложности с показом своих презентаций через программу Power Point из пакета MS Office. Лично у меня все прошло гладко и четко, как и раньше. Возможно потому, что я такой программой давно не пользуюсь. Хотя было время в прошлом, когда пользовался. Точнее натягивал картинки на их формат и все. С тех пор много воды утекло и у меня есть целый набор собственных программ слайд-шоу, которые и презентации легко делают. Но последнее время я использую программу, написанную на своем языке ACL, так как для показа онлайн со своего компьютера она более yдобная, чем программы для браузера на языке Javascript. Такие программы более удобны на сайте в интернете, а для презентации онлайн лучше программа без браузера.
В наборе готовых программ номер этой программы 27. Она способна по серии слайдов в виде картинок одинакового размера (желательно, но не обязательно) приготовить таблицу иконок и запаковать все в zip архив одним файлом. В таком виде число файлов на компьютере сокращается, и все работает быстро и просто. И как раз для презентации удобно использовать третий вариант вида программы, когда она исполняет только одну программу, зато быстро, то есть за один клик. Для этого используется командный файл (_runs.bat). На этот файл можно сделать иконку на рабочем столе и клик на этой иконке сразу открывает презентацию в полноэкранном режиме.
Для онлайн конференции в БФУ используют программу Яндекс-телемост. Я лично люблю продукты Яндекса и активно использую и Яндекс браузер, и Яндекс диск. И этот телемост тоже нормально работает. Моя презентация работала как часы, но я не очень старался (нет времени) и потому использовал программу не в полную силу. Ее преимущество состоит в том, что презентация способна из каждого слайда запускать любую программу на компьютере, а может запускать и собственные программы, то есть на языке ACL. То есть очень легко и просто выйти из презентации, погулять по компьютеру я потом вернуться обратно на тот же слайд. Он все время стоит как фон.
То есть любой слайд презентации можно использовать как рабочий стол и на нем показывать все остальное. Но в таком режиме работать совсем не обязательно, можно и просто показывать слайды. Просто иногда бывает удобно включить браузер и показать что-то в интернете или на своем сайте. Такой режим делается не так легко, в том плане, что надо немного чему-то научиться. Я написал специальную статью как использовать программу в таком режиме. Вот ссылка.
http://kohnvict.ucoz.ru/vkacl/animations.htm
А как работает сама программа можно почитать на этом сайте
http://kohnvict.ucoz.ru/acl/aclp-info.htm
кликая номер 27. И есть еще видео, вот ссылка
http://vk.com/video/@id224526808?z=video224526808_456239258
Рассказ о программе начинается с 19-й минуты. Но потом я записал еще три видео об этой программе, вот их ссылки
http://vk.com/video/@id224526808?z=video224526808_456239239
https://vk.com/video/@id224526808?z=video224526808_456239240
https://vk.com/video/@id224526808?z=video224526808_456239241
Этой информации должно хватить, чтобы понять как это работает.
[(< 4 >)]
Четвертый рассказ о моем языке программирования. Третий был 2 дня назад. Прежде, чем понять какой язык программирования лучше или хуже, надо ознакомиться с тем, какие языки вообще существуют. Сколько всего языков программирования есть в мире никто не знает. Но, тем не менее, какие то списки составляются. Я тоже уже давно составил некоторый список языков программирования, хотя работа не закончена и мой список все же не полный. И все же вот ссылка на этот список, точнее на статью, в которой он представлен
http://kohnvict.ucoz.ru/sp/proglang.htm
Языков на самом деле больше. И есть еще языки программирования, которые создаются любителями, то есть такими, как я. И даже список таких языков был сделал много лет назад, вот ссылка
http://compiler.su/entuziasty-razrabotchiki-kompilyatorov-i-ikh-proekty.php
Возможно этот список и сейчас увеличивается. Есть в этом списке и мой язык программирования, он назван vkACL. Хотя так я называю не язык, а свой первый сайт о языке. Но возможно это и лучше, так как сокращение ACL используется и в других областях. Можно перепутать.
Я сам изучал в деталях и использовал не так уж много языков. Это Алгол, Фортран, Ассемблер, Бейсик, Постскрипт, Джаваскрипт, Джава, Питон. Еще были языки, которые я изучал, но не использовал. Это Кларион, Пролог, Си, Си++, Си#, Паскаль, Dbase и наверняка еще что-то есть, о чем я уже даже не могу вспомнить. Но когда я создавал свой язык я не все знал из этих языков. В частности я не знал Постскрипт. А получилось так, что мой язык имеет элементы, похожие на те, что есть в этом языке. Впрочем в России его мало кто знает. Хотя это первый продукт фирмы Adobe, которую знают все.
Ну и еще есть язык команд для процессора. Сейчас его уже никто не использует, а в самом начале моей работы программистом я именно в коде процессора писал программы для компьютера M-20. Это был 1968 год. Ближе всего к этому языку Ассемблер. На нем еще иногда пишут. Но я его использовал как дополнение в фортрану для системы ДОС. В Виндовс необходимость в этом языке отпала. и вот как раз в моем языке есть кое-что из ассемблера и это также похоже на фортран.
В языке есть команды и больше ничего нет. Они начинаются с символа # в любом тексте. И все, что нужно, сделано в виде команд. Для сокращения записи повторяющегося кода есть процедуры. Но они просто присваивают имя некоторой группе команд и все. Достаточно указать имя процедуры и не нужно переписывать все те команды, которые в ней содержатся. Так же точно сделано в языке Постскрипт. Но для такой работы нужна жесткая память. Интересно, что в языке Постскрипт вообще нет массивов. Память организована как автобус в одной дверью. Пассажиры туда входят и выходят по очереди (то есть в строгой последовательности). Но конечно всегда есть и такие, которые лезут без очереди.
Но я все же сделал массивы, чтобы различать тип записи чисел. У меня есть массив просто чисел, массив целых чисел, массив номеров символов текста и массив переменных из двух символов. Эти массивы очень большие, но конечные и как ими пользоваться программист решает сам. А массивы доступны всем программам на равных правах. Такой конструкции я не увидел ни в одном языке программирования. Это чисто мое изобретение. Но лично я так с самого начала работал на фортране. Там можно было объявлять массивы, но я этого не делал. Объявлял один массив и все. Для новичков в программировании это никаких проблем не создает. А вот для тех, кто уже что-то программировал переучиваться сложно. Но в большом наборе уже написанного мной кода можно увидеть как все это делается.
Важно, что это позволяет легко использовать код из внешних файлов, объединять все программы в одну, записывать код в символьный массив и выполнять его динамически. И вот это я как раз широко использую. Сначала я решил выделить некоторые стандартные процедуры в отдельные файлы и указывать исполнение кода из файла. Это очень сокращает запись программ, но чтобы было еще короче я ввел понятие суперкоманд. Они начинаются с двух символов ##. А эти файлы просто записывались в специальную папку. Но потом файлы стали размножаться как комары. Кроме того, частое их использование нагружает винчестер.
И я стал записывать суперкоманды в один файл, каждую суперкоманду в отдельную строку. А чтобы не нагружать винчестер один раз прочитанная суперкоманда сохранялась в памяти и второй раз использовалась уже из текстового массива. Это намного быстрее и файла второй раз не надо. Но в первом варианте имя суперкоманды совпадало с именем файла. Этот вариант тоже работает. А что делать со вторым вариантом. А в нем суперкоманды просто имеют номера. Они вызываются по номеру. То есть достаточно записать ##1 и целая большая программа начинает работать. А всю информацию ей можно сообщать через общие массивы.
Компактность записи программ для меня очень важна. Я печатаю быстро и много, но программы -- это отдельная тема. Их надо понимать и удобно когда все сразу перед глазами, а не выстраивается в длинный вертикальный список. Как раз за это я не люблю Питон. Там все наоборот. Правда без опыта понимать программы на моем языке очень сложно. Ну так любой язык не просто выучить. Надо учиться. А тренированные люди делают такое, что простым людям кажется чудом. Достаточно посмотреть на гимнастов, теннисистов, особенно настольных. Конечно есть минусы. Как же без них. Но о них в другой раз.
[(< 5 >)]
Пятый рассказ о моем языке программирования. Всем известно как организована любая армия. Есть генерал, он не самый главный, но у него в подчинении очень много людей, целая армия. Свои приказы он отдает полковникам и только с ними имеет дело. Полковники передают приказы лейтенантам, те сержантам и наконец приказ доходит до солдатов, которые и делают всю военную работу. Примерно так же основано все на свете, точнее в обществе людей. В том числе и в программировании. В этой сфере солдатами являются команды процессора. Эти команды формируются из команд компилируемого языка, то есть программы, которая компилируется. Это более высокий уровень, но не самый высокий. Выше идут интерпретируемые языки программирования, которые дают команды программам, которые компилируются.
Можно и так сказать, что компилируемые программы имеют программу на интерпретируемом языке как набор входных данных. Такая программа уже после компиляции прочитывает текст интерпретируемой программы и исполняет его. Но и текст интерпретируемой программы тоже имеет входные данные. И такими входными данными может служить новый интерпретируемый язык программирования. То есть иерархия более высоких чинов может быть достаточно длинной. В случае с моим языком программирования именно так и происходит. Мой язык интерпретируется программой, написанной на языке Джава. Но язык Джава тоже интерпретируется программой, которая называется виртуальной машиной джавы (или JRE). И вот как раз эта программа уже компилируется раздельно в каждой операционной системе. А все интерпретируемые языки от системы не зависят, если ее не используют.
Надо понимать, что на передачу приказов, их расшифровку и реализацию уходит какое-то время. Но современные компьютеры настолько быстрые, что это время исчисляется миллисекундами или даже еще меньше. И для человека нет разницы между миллисекундой и микросекундой. Для него все равно все это мгновенно. Но только в том случае, когда нет больших циклов. А компьютер поначалу только для того и создавался, чтобы работать с большими циклами. В интерпретируемых языках все очень большие циклы должны быть организованы в один приказ. Фактически это означает введение матричной математики. Все операции должны выполняться не с отдельными числами, а с матрицами. Впрочем небольшие циклы даже такие языки быстро выполняют. Хотя время исполнения может увеличиваться во много раз. Пока это время равно миллисекунде вместо микросекунды это не страшно.
Так в моем языке ACL. Что касается самого языка Джава, то там циклы перед выполнением компилируются в код процессора. Это не происходит в самом начале еще до работы программы, а динамически, в процессе работы программы. Так работали самые первые многопользовательские компьютеры на фортране. Компьютеру подавался код на фортране, он его компилировал, и потом сразу выполнял. Но код после компиляции не сохранялся. Исполняемой программы не было. Тогда у компьютеров было очень мало памяти, не было внешней памяти и они не могли запомнить тысячи программ в коде, которые они выполняли. И так же точно работает Джава. Поэтому она способна быстро выполнять большие циклы. Но многие интерпретируемые языки на это не способны. Например, Матлаб или его бесплатные аналоги.
У интерпретируемого языка есть еще один минус. Он пишется текстом в текстовом редакторе. И этот текст нужно постоянно редактировать хотя бы на стадии разработки программы. А текстовые редакторы получают информацию с клавиатуры. И если работать на ноутбуке, то там есть тач-пад. И от тряски он часто срабатывает не так, как надо. В результате в уже отлаженный текст может влезть какой-то неправильный символ. Или другой пример, символ набили, а клавиатура не сработала и его нет. Но вы помните, что он там должен быть и не видите ошибку. А программа работает неправильно и непонятно почему. Как с этим бороться я пока не знаю. Разумеется, что можно копить все старые версии, но их может накопиться очень много. И работать с ними тоже не очень то удобно.
Один из приемов состоит как раз в том, что текста должно быть мало. Готовые куски надо вставлять в процедуру и хранить где-то в другом месте, то есть там, где они не могут быть испорчены. Но не всегда это получается. Впрочем в моем языке легко локализовать то место, которое не работает, а дальше надо просто внимательнее смотреть. Ну и в утешение стоит сказать, что любые сложности и трудности являются двигателями прогресса. Пока делаешь поиски ошибки можно узнать очень много интересного о программе и ее работе. То есть хоть работа и тормозится, но польза есть и от этого.
[(< 6 >)]
Шестой рассказ о моем языке программирования. Итак, как я уже не раз отмечал, мой язык сильно привязан к языку Джава. В том смысле, что он не может сделать ничего из того, что нельзя сделать на языке Джава. Например, редактировать видео файлы. Но это отдельная тема и программ редактирования видео очень много. А в остальном все возможно в принципе, но не все реализовано в конкретный момент. Как известно, в любом языке, даже в разговорном типа русского языка есть много такого, что надо повторять очень много раз. И хочется это делать побыстрее и попроще. В этом плане мой язык просто является другой формой записи стандартных наборов кода на языке Джава.
Ну и еще быстрого использования того кода на языке Джава, который я уже написал, хотя в самом языке таких возможностей нет. И вот этот момент является как бы новым. То есть мой язык намного лучше, чем язык Джава, для новичка, так как он базируется на большом объеме уже написанного мной кода на Джава. И не только на Джава, но уже и на самом языке ACL. В этом плане интерпретатор полезен даже тем, кто вообще не хочет учить мой язык. Можно просто использовать уже написанные программы. Собственно новую версию программы я первоначально и делал как проигрыватель написанных мной программ. Сейчас их 74, когда-то было 50, в будущем будет 99. На такое число рассчитана первая таблица. Затем придется открывать вторую таблицу. 99 просто потому, что используются только двузначные числа.
В новой версии все программы сделаны как бы по одной системе. Каждая сначала открывает текстовый файл, в котором можно записать много вариантов входных данных и тут же подсказка что они означают и краткая инструкция о том, что программа делает и как. После выбора варианта программа работает и выдает результаты, затем либо ее можно повторить с другими вариантами, либо выбрать новую программу, либо закончить сеанс. Но есть возможность исполнить и любую другую готовую программу, записанную где либо на компьютере.
А если хотите писать свой код, то тогда программу надо вызывать через другой командный файл и получаем среду разработки, хотя и среди готовых программ есть и такая, в которой можно писать свой код. Но специальная форма программы все же лучше и удобнее. Она, впрочем, тоже выполняет готовые программы. Более того, их можно выполнять и из кода на языке ACL. Интересно, что такая форма программы появилась только через 20 лет после создания первой версии интерпретатора на Джава. Раньше тоже было неплохо, но сейчас лучше. Код готовых программ является хорошим источником примеров для изучения возможностей и приемов программирования на языке ACL. Но код запакован в одну строку и читать его не удобно.
Однако программа номер 26 может показать код любой программы в удобном виде из любого файла, в котором программы записаны в одну строку. Более того, код можно редактировать и настраивать программы на свой вкус. Если что-то пойдет не так, не беда. Можно скачать оригинальную версию с моего сайта. Или заранее сделать копию только что скачанной версии. Чем программа может помочь новичкам в работе. Во-первых, можно делать несложные расчеты и это делается очень просто. То есть калькулятор. Во-вторых, можно рисовать картинки и модифицировать уже нарисованные картинки. То есть мольберт. Относительно несложно можно делать анимации с картинками. Это не видео, скорее мультики, слайд-шоу и все такое.
Есть и музыка, но только из mid файлов. Это когда в файл записывают "ноты" для исполнения самим компьютером. Такие файлы имеют небольшой размер, но вполне неплохо звучат. Их можно найти в интернете в любых количествах. А mp3, mp4 и другие файлы можно исполнять через браузер. Программа способна сама запустить браузер и он все исполнит. Ну и тексты. Их можно записывать, есть очень продвинутый редактор с большим числом функций. И их можно как угодно преобразовывать, то есть автоматически редактировать. Иногда, особенно при работе с большими текстами программа может спасти очень много времени. Лично я уже давно вообще не представляю как можно работать без возможности быстро написать программу и выполнить ее. При моей скорости работы мне кажется, что другие люди вообще ничего не делают. Это как смотреть на велосипедиста из гоночного автомобиля.
Примерно так же некоторые умельцы работают на Питоне. Тоже быстро и просто. Но Питон все же сложнее, и надо больше усилий чтобы его выучить и с ним работать. Люди, которые работают на Питоне, уже не велосипедисты, у них Запорожец, был в советское время такой автомобиль. А потом еще Ока появилась. Но иногда бывают сложности, однако об этом в другой раз.
[(< 7 >)]
Седьмой рассказ о моем языке программирования. Я обещал рассказать про сложности. Вообще говоря, сложности есть в любом интерпретируемом языке. Ведь интерпретируемый язык не может быть примитивным. Он не содержит те самые кирпичи, из которых строят дома. Он генерал, а не солдат. Он только приказывает, но не исполняет. Если перейти на сравнение с грамматикой, то у него нет букв. Есть только слова. А ведь всем известно, что букв мало, а слов много. Вот и генералы часто издают приказы пачками, а кто их будет исполнять не всегда ясно. Так же и в моем языке. Есть очень много команд, если учитывать в каждой команде все операции какие она выполняет. И есть еще параметры. В зависимости от их значений возможно выполнить разные операции по разному. И вот всех таких вариантов очень много. Примерно так же много, как слов в языке.
И вот все это многообразие выучить невозможно. А если и удается выучить, то все равно большая часть потом забудется. Ну так ведь и люди не знают всех слов в языке. У каждого свой запас. А если надо что-то узнать, то есть словари, справочники и так далее. Все можно посмотреть и вспомнить. И точно так же в моем языке. Есть документация и там все написано. Есть таблицы, в которых легко найти что надо и потом перейти в более подробному описанию. Достаточно знать только общую структуру языка и его возможности. Например, помню, что можно сделать то-то. А как это сделать уже не помню. И надо смотреть, чтобы не было ошибок. Полагаться на память нельзя. Она может слегка обмануть и программа работать не будет.
И вот как раз по этой причине удобно делать готовые процедуры всех видов, то есть просто процедуры, суперкоманды, готовые программы, которые можно запускать как целое. Но тогда объем того, что нужно запоминать еще более возрастает. На это есть только одно противоядие -- надо не лениться записывать подробное описание всего, что сделано. К сожалению, я сам поступаю так только при второй итерации. Сначала я все пишу без всяких объяснений и все работает. Но потом я это забываю, и мне приходится разбираться в коде заново. Вот при таком разборе я уже все записываю. Наверно такова природа человека. Сначала хочется поскорее увидеть результат и не до телячьих нежностей. А когда уже все известно и торопиться некуда можно и описание записать.
Но писать надо и много. Иначе все забывается. Бывает даже так, что забывается сам факт, что программа уже сделана. Начинаешь ее делать снова, и только потом вдруг узнаешь, что уже делал это. А бывает и так, что помнишь -- программу делал, но найти ее код не удается. Однако бывали времена когда и сами программы не записывались. Записал, выполнил и забыл. А надо снова, снова записывай. К счастью, сейчас не так. Все, что сделано, можно запомнить. Только вот надо иметь четкую систему все это архивировать. В разных языках программирования это делается разными способами. Кстати, все, о чем я сейчас написал, в полной мере относится и к языку Джава. Там такие же проблемы. Очень много самых разных функций, параметров и так далее. Намного больше, чем в моем языке. И есть документация, есть толстые книги и много чего еще. И так же точно в языке Постскрипт, Матлаб и так далее.
Я тоже уже много текстов написал. Все ссылки были в первых рассказах. Более того. Как только на этом языке начинаешь создавать конкретную программу, которая много чего умеет делать, возникают такие же проблемы. Конкретная программа может выполнить тысячи вариантов и их тоже все надо как-то описать. Но не все так страшно. Дети ведь как-то учат язык. Не всем надо знать все. И не все делают все работы всех программ и знают все языки. Тут свой мир, он похож на мир земной. И у каждого человека есть своя квартира, свой дом, свой квартал, а также центр города, в котором он живет. А остальное он может и не знать. Так же точно и в языке есть обязательные и массовые операции, которые нужны всем, и есть много такого, которое нужно немногим, причем каждому свое.
В качестве примера я покажу только одну суперкоманду, которая печатает на экране сообщение
#pr Октябрь уж наступил. Уж роща отряхает . . .\E ##33
Суперкоманда тут имеет номер 33, и она вторая. А первая команда определяет текст, который печатается. Все предельно просто. Разумеется, есть команда, которая печатает на экране текст, причем различным способом, на разных носителях, разным фасоном и так далее. Но в суперкоманде уже все определено и используется некоторый формат, который оптимален для меня в данный момент. А команда с именем pr тоже не простая. У нее есть большой набор своих команд. Они все начинаются с символа \. Она может писать текст очень разным способом с большим числом вариантов, но тут используется только одна такая команда \E, которая указывает на окончание записи текста. Как это развить будет далее. А пока все.
[(< 8 >)]
Восьмой рассказ о моем языке программирования. Раньше я показал первый код на моем языке, который печатает текст на экране некоторым образом, который лично мне нравится. Но этот код можно развить самым простым способом. Например, вот так
#pr 1|2|3|Какого цвета снег?\n1 -- белый\n2 -- черный\n3 -- красный\E ##33
Тут та же суперкоманда 33, только текст поменялся. Появились символы вертикальной черты | и символы окончания строки \n . И сообщение на экране будет выглядеть иначе. Оно будет записано в 4 строки и под ними будут три кнопки с названиями 1, 2 и 3. В тексте задается вопрос и три возможных ответа. А пользователь должен кликнуть одну из трех кнопок. Результат действия пользователя будет передан в программу и может быть проанализирован, то есть его можно сравнить с правильным ответом.
А это уже почти готовая программа ЕГЭ. Можно приготовить серию вопросов и возможных ответов и анализировать знания не только школьников, а и любых категорий людей. Такую программу очень легко сделать, но она будет иметь внешний вид, который нравится мне, а другим пользователям языка может и не понравится. Но это не проблема. Каждый может переписать суперкоманду 33 так, как ему нравится и потом использовать так же просто. Я показал как можно учить язык на примерах. Лично я считаю такой метод самым эффективным. Он очень широко используется в практике, и условно его можно назвать (Делай как я). Так учат танцевать, играть в футбол, готовить еду и много чего еще.
А что касается логики языка, то все языки имеют одну и ту же логику и делают одно и то же по существу. Они различаются только формой записи информации. Это можно сравнить с одеждой. Если людей раздеть, то они все одинаковые. А вот одетые люди могут выглядеть очень даже разнообразно. Хотя реальное назначение одежды только в том, чтобы не было холодно. В теплых краях люди вообще не одеваются. А в очень теплых, например, в пустыне Сахара они снова одеваются, но тут уже не до фасонов. И, тем не менее, то, как записывается код программы имеет значение, причем для создателей языка это может быть важно. Например, для многих языков придумывают сложную программу, которую называют Среда Разработки. Эта программа может требовать много ресурсов и ее тоже надо учить. А почему? А потому что язык настолько неудобный, что писать на нем сложно.
К таким языкам относится и Джава. У него очень длинные названия практически всех операторов. Авторы языка хотели создать такой язык, который бы легко читался. Но он легко читается только для англоязычных программистов. Остальные просто видят очень длинные конструкции и все равно не понимают что они сообщают. Лично я не пользовался средами разработки готового вида. Просто не люблю, когда меня обслуживают. Но я с самого начала написал на Джава только одну программу. Точнее несколько, но остальные редко используются. Ну и на Джава тоже можно весь код собрать в одну программу, что я и сделал. Постоянно писать программы на Джава, и, тем более, смотреть чужой код я бы не стал.
А мой язык как бы делает то, что можно сделать и на языке Джава, только писать надо меньше. Но это только в самом начале. А уже процедуры, суперкоманды и готовые программы на моем языке делают работу, которую на Джава пришлось бы писать очень долго. А бывает так, что скорость выполнения работы имеет решающее значение. Особенно это касается работы в науке. Если три человека делают работу, которая приводит к открытию, то оно принадлежит тому, кто сделал работу раньше. Остальные просто не считаются. В моей научной работе так было, и я справился.
Но справедливости ради надо сказать, что не только мой язык такой уж замечательный. Я люблю язык Постскрипт и часто им пользуюсь. Он позволяет рисовать рисунки и часто может это сделать даже лучше, чем на моем языке. То есть на моем языке я тоже могу сделать такой рисунок, но это будет менее удобно. И только потому, что надо больше писать. Графика на моем языке точно такая же, как на Джава, а она, в свою очередь списана с языка Постскрипт. Но писать надо больше и более сложные конструкции получаются. На языке Джава тоже можно делать процедуры, просто это делается более сложным образом. А вот исполнять код динамически невозможно, так как частичная компиляция в байт код все же делается.
Примеры кода на моем языке уже написаны. Их можно использовать вместе с описанием каждой команды и во всем разобраться. Такая работа все же требует времени. Можно написать образцы некоторых программ с объяснением как они работают, но это я попробую сделать в отдельной статье. Хотя совсем простые примеры уже показаны, их можно найти в списке материалов по языку, ссылка на который была показана во втором рассказе.
[(< 9 >)]
Девятый рассказ о моем языке программирования. Отдельно все же стоит вопрос о том, кому и зачем надо учить язык программирования. Тут два варианта, точнее вариантов много, рассмотрим два. Первый вариант, вы не знаете ни одного языка программирования, и работаете с помощью разного рода готовых программ. Второй вариант, вы уже знаете какие-то языки программирования и они вас устраивают. В обоих случаях речь не идет о том, чтобы стать программистом, то есть сменить работу. Бросить то, что вы делали до сих пор и устроиться в какую-то фирму на работу программистом. Хотя в интернете много предложений именно об этом. Есть фирма Скилл Фэктори, которая как раз обещает научить и трудоустроить, но не бесплатно.
Такой вариант я не рассматриваю, так как уверен, что если человек не смог себя проявить на той работе, какую он выбрал ранее, то не получится и быть программистом. А если и получится, то в таком варианте, который никому не понравится. Даже среди программистов есть такие, которым поручают выносить мусор и делать то, что никто не любит делать. Речь идет о том, что у вас уже есть работа, она каким-то образом связана с компьютером, то есть надо что-то вычислить, сделать презентацию, графики, редактировать тексты для отчетов и так далее. И вот если такое есть и вы не знаете языков программирования, то мой -- один из самых легких. Мне кажется, что даже школьникам подойдет, хотя я могу и ошибаться. Я уже плохо представляю современных школьников.
Есть много таких вещей, какие достаточно легко программировать, и программа просто текстом, который можно читать и легко исправлять, а потом за один клик заставить работать -- это самый простой вариант. Но все же надо знать алгоритмы и приемы, то есть не только элементарный код, но и его комбинации. Но это легко посмотреть в примерах. Я знаю, что бывают уроки в школе, лекции в институте, курсы самого разного толка, в том числе и онлайн. Но лично я никогда на такое не стремился. Все можно выучить самостоятельно. Раньше это называлось экстерном. Сейчас все есть в интернете. Не только тексты, но и лекции, и курсы. И не только платные, есть и бесплатные. Я пока записал лекции по готовым программам. Но будет время, запишу и по языку. А тексты уже есть. Кроме того, в моем случае есть возможность задавать вопросы автору, то есть мне, по электронной почте или в мессенджере сети ВК.
На моем языке даже при использовании готовых программ можно написать диспетчер их запуска и базу данных вариантов входных данных, а также результатов работы. Ну и любую степень обработки данных. Лично я сам часто пишу письма, пользуясь своим редактором, который тоже является частью интерпретатора языка. А вот адреса, и сами письма я держу не в онлайн почте, хотя и там тоже, а на компьютере. Это намного более надежно и удобно. Вообще любой учет и контроль проще вести не по чужим программам, хотя и такие есть, а по своим собственным. Кроме того, программирование -- это очень хорошее творчество. Намного лучше, чем писать картины, сочинять стихи, лепить из пластилина. Оно проще и разнообразнее.
Особенно это удобно для коллекционеров. У меня есть рассказ о том, как делить людей по категориям. Параметров много. По одному из них они делятся на игроков и коллекционеров. Можно составлять коллекции ссылок на интернет самого разного толка, таблицы кнопок для запуска программ, документов, написания текстов и так далее. А еще шифрование паролей и разной информации. Можно делать анимации, моделировать процессы, в том числе механические. А любое творчество намного интереснее, чем просто читать, слушать и смотреть. Про второй вариант напишу позднее.
[(< 10 >)]
Деcятый рассказ о моем языке программирования. Итак, рассмотрим второй вариант. Вы уже программируете и ваш язык программирования вас устраивает. Зачем вам учить еще и мой язык программирования. Тут снова может быть два варианта. Речь о том, что люди разные. Об этом как бы не принято говорить, потому что это приводит к вражде и войне. Но ведь известно, что и столовым ножом можно убить человека. Так что -- запретить ножи и вилки. Будем есть руками. Но и руками можно убить. Короче, это не повод для того, чтобы замалчивать очевидные факты. Люди таки разные. И не только потому что есть мужчины и женщины, белые и черные. А и по способностям, по умственному развитию, образованию и много чего еще.
Да, есть люди, которые прямо мне говорили, что мол я с трудом выучил один язык программирования и больше мне таких мучений не надо. Лучше знать один язык, но хорошо, чем много, но плохо. Возразить тут невозможно. Все языки говорят об одном и том, и любую проблему можно решить на любом языке. И все же языки разные. Мой сын учился в МИРЕА и им преподавали разные языки программирования. Программист профессионал должен хотя бы иметь представление о разных языках, даже если он работает на одном. Иногда возникает необходимость прочитать код программы на одном языке и перевести его на другой язык. Лично я в разные моменты времени был вынужден переходить от одного языка к другому потому что разные приборы использовали разные языки.
Так же точно и теперь я программирую на разных языках одновременно. Их 4, а именно, мой, Джаваскрипт, Постскрипт и Джава. Мой язык основной и на нем легче всего работать. Но программы для браузера, то есть на сайт он писать не может. Поэтому, если такая необходимость возникает, я перекодирую программу со своего языка на джаваскрипт. Это совсем не сложно, так как оба языка интерпретируются. А если нужно рисовать рисунки, то я часто это делаю в Постскрипте, так как там это просто и западные научные журналы принимают именно этот язык для графиков. Ну а языком Джава я пользуюсь только для того, чтобы исправить или дописать интерпретатор своего языка. Это тоже легко делается.
Но еще когда я программировал на фортране, то я просто читал о том, как устроены другие языки программирования. Просто потому что это было интересно. Еще один пример, иногда мне давали код, написанный на Си. Чтобы его использовать, мне приходилось перекодировать его на язык Джава. Это тоже легко делается, потому что языки очень походи по грамматике, хотя и по разному обрабатываются и используются. Для программ на Си нужен компилятор, у меня его нет и мне проще переписать код на язык Джава.
Если честно, то для тех, кто уже программирует на чем-то и доволен, учить мой язык не обязательно. А вот мою программу интерпретатор вполне можно использовать в готовом виде по той причине, что в ней есть много готовых операций, которые делаются легко и просто и ничего не надо программировать. Ну а если не понравится внешний вид или что-то еще, то тогда можно и посмотреть как это исправить. И это совсем не сложно. Но наверняка есть и просто любопытные люди, которым интересно как устроен мир, и что в нем можно сделать одно и то же разными способами. Не изучая чужих идей, не получится придумать свои. Нет таких поэтов, которые бы не читали чужих стихов. Поэтам это необходимо. Но и всем остальным, кто думает, обычно интересно как думают другие. Даже простое любопытство может помочь узнать новое.
.