История и причины появления языка Перфолента.Net

Материал из ТХАБ.РФ
Перейти к: навигация, поиск

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

Моё знакомство с программированием состоялось где-то вначале 80-х на теоретическом уровне. Компьютера у меня не было, но статьи о программировании, которые часто печатались в советских научно-популярных и научно-технических журналах меня увлекали и перечитывались по многу раз. Поэтому, когда я поступил в техникум и впервые сел за клавиатуру компьютера СМ-ХХХХ (не помню уже точный номер модели) размером с хороший холодильник, то испытывая все же некоторый трепет от прикосновения к высоким технологиям, как сказали бы сегодня, я легко окунулся в поток команд, операторов, переменных и других прелестей, которые окружают жизнь программиста. Потом были машины ДВК, ЕС-1037, ЕС-1840 и др.

Но особую радость принес купленный в 1988-м году за 115 советских рублей программируемый калькулятор МК-52. Вот он, красавец, и сейчас лежит передо мной, такой же элегантный и работоспособный, как и в 1988-м. Все-таки надежная штука эта советская техника! Получив в свои руки настоящую ЭВМ, пусть и не очень мощную, грешно было не заняться написанием программ, благо все ведущие технические журналы публиковали разнообразные статьи, подогревая интерес. Калькулятор мне здорово помог и в учебе, множество однообразных расчетов превращались в увлекательное дело и выполнялись значительно быстрее.

Калькулятор калькулятором, а хотелось чего-то большего. И не мне одному! В советских технических журналах как из рога изобилия посыпались схемы персональных компьютеров, предназначенные для самостоятельного изготовления – РадиоРК-86, ЮТ-88, Специалист, Орион-128, вот последний я и выбрал. Не буду описывать как я искал необходимые микросхемы, как заказал в каком-то кооперативе печатную плату, как все это чудо паялось и отлаживалось, но в конце концов мой первый персональный компьютер выдал на экран приглашение А:>_.

И вот тут можно перейти к разговору о языках. Мне уже было что сравнивать. Я уже овладел ассемблером процессора КР580ВМ80А, на котором я с энтузиазмом писал утилиты для своего Ориона, продолжал пользоваться языком ПМК, делая расчеты на занятиях в институте, программировал на Фортране, выполняя лабораторные и контрольные, и, наконец, писал игры на Бейсике. Вот Бейсик меня и зацепил. При всей своей ограниченности он позволял быстро получить работоспособную программу, которую было легко читать и дорабатывать впоследствии.

Не знаю, что было бы, если я познакомился бы с языком Си раньше, чем с Бейсиком, но, когда я с ним познакомился, он не вызвал во мне никакого энтузиазма. Он оказался для меня чем-то промежуточным между Ассемблером и Бейсиком. Он совсем не был сложным для меня, не в этом дело. Вообще, я считаю не корректным сравнивать языки, предназначенные для разных целей, но когда стоит проблема выбора языка для решения конкретной задачи, то вольно или невольно приходится делать сравнения и выбор. Так уж получилось в моей жизни, что в подавляющем большинстве случаев я выбирал язык более высокого уровня и ни разу не прогадал. Т.е. Бейсик (имеется ввиду всё семейство языка, включая последние реализации VB.Net, а также включенный в Microsoft Office и многие другие программные продукты язык VBA) давал мне работу и хлеб. Заказы на языках более низкого уровня мне тоже приходилось выполнять, но их было на порядок меньше. Де-факто я сложился как прикладной программист решающий практические задачи обычных людей, от инженеров до бухгалтеров.

Но однажды произошла революция и у Бейсика появился конкурент! В 1996 году я впервые познакомился с программой 1С:Предприятие 7.5. Главное, что там было, это язык с русскими операторами. Правда был он еще более ограниченным, чем Бейсик, но в комплексе с прикладной библиотекой и хорошей оболочкой для управления базой данных это была гремучая смесь! Не удивительно, что фирма 1С стала почти монополистом в области программ для бухгалтерии и управления бизнесом.

За 20 прошедших лет выросло огромное количество программистов, ежедневно программирующих на языке 1С. Многие из них не знают ни одного другого языка. Язык 1С и у меня стал одним из главных рабочих языков, т.к. где есть заказы там и пасутся программисты.

И вот, с течением времени, я стал осознавать, что с большой неохотой берусь за программирование на языках с англоязычными операторами, что коверкать русские слова латинскими буквами занятие не приятное, а писать на англо-русской смеси неудобно и как то не эстетично, что ли. Более того, читать и дорабатывать чужие программы, написанные на русском языке, настолько легче, что это просто экономически выгодно! Вобщем, я совсем бы забросил англоязычные языки программирования, но не могу! Язык 1С это не самостоятельный язык, а всего лишь внутренний язык платформы 1С:Предприятие, на котором нельзя написать даже простейшую консольную утилиту.

Поиски какого-либо другого русского языка программирования не привели к ожидаемым результатам. В наличии оказались только устаревшие языки, компиляторы которых работают под DOS или даже СР/М, или не доделанные проекты, не годящиеся для практической работы, или вполне хорошие языки, но предназначенные больше для обучения, чем для практической деятельности. Отсутствие богатых функциями прикладных библиотек в этих языках так же не способствовало тому, что бы я смог использовать один из них. Сами языки я называть не буду, т.к. не хочу создавать антирекламу ни одному из них, а вдруг у авторов получится доработать и раскрутить их, я был бы этому очень рад.

Наши желания часто выступают в качестве двигателя прогресса. Вот хочется мне, что бы русский язык программирования был! Тем более, что один из детей, которых я обучал программированию, первым делом спросил: «А на русском нельзя?» Устами ребенка глаголет истина! Я хочу, что бы на русском было можно! Вот почему язык Перфолента.Net будет!

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

Обдумав все эти требования, я пришел к мысли, что, во-первых, язык должен в базовых конструкциях и прикладных библиотеках максимально наследовать язык 1С, что бы опыт тысяч программистов не пропадал даром и мог быть использован при программировании на новом языке. Это важно, т.к. часто от нового языка отказываются из-за необходимости больших затрат времени на его изучение. Во-вторых, и в-третьих, язык должен быть основан на технологии .Net, что обеспечит мощь и долговечность. Немаловажным оказался и тот фактор, что платформа .Net Framework имеет в своем составе почти все, что нужно, для создания компиляторов, а также очень мощную библиотеку классов, которая сразу станет доступной для использования в новом языке. Можно было пойти и в сторону виртуальной машины Java, похоже, что там всё могло бы получиться не хуже, но т.к. я её никогда не использовал и не знаю, то решил, что на знакомой мне платформе результат будет достигнут быстрее.

Приняв эти базовые решения, я решил взять все лучшее от языков 1С, VB.Net и C#. Собственно, чем и занялся…

Однако, не я один думал в этом направлении. Пока я писал свой компилятор, в сети появился отличный проект OneScript. Это почти точная копия языка 1С, но позиционирующаяся автором, как инструмент для автоматизации рутинных работ программиста и администратора. Язык OneScript, как и язык 1С относятся к «скриптовой» группе языков, т.е. основной вид существования программы, это её исходный текст. В этом есть как преимущества, так и недостатки, но я очень рад, что такой инструмент появился. Проект OneScript, что называется выстрелил, вокруг него образовалась своя экосистема энтузиастов, разработчиков и пользователей, создавших массу дополнительных библиотек, расширяющих возможности языка.

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

  • Например, недавно появился Русский Фокс, автор Андрей Ошнуров, в котором развивается трансляция под интерпретатор FoxPro 9.
  • Очень интересен проект Гонец, автор Роман Цованян, в котором реализован язык похожий на язык 1С, но заточенный под высоконагруженные микросервисы.

Язык Перфолента.Net, в отличие от выше указанных, относится к группе компилируемых языков, т.е. основной вид существования программы, это код переведенный на промежуточный язык IL, который пользователем программы без специальной подготовки и инструментария изменен быть не может. Программа пишется, затем компилируется и в готовом к запуску виде распространяется среди пользователей. Тут конечно может пригодиться и язык OneScript, да-да, на нем ведь можно писать скрипты и для программ, написанных на языке Перфолента.Net! Такая возможность выглядит заманчиво.

Начиная писать компилятор, я не совсем понимал с какими трудностями мне придется столкнуться. Тут и мучительные размышления над новыми ключевыми словами и конструкциями языка, над необходимостью нарушить полную совместимость с языком 1С, да и документация по компиляции в IL оказалась тем еще ребусом. Но дорогу осилит идущий. И я по ней пошел…

Надеюсь, что на этом пути я встречу не мало энтузиастов, таких, как упомянутый выше Андрей Ошнуров, очень мотивирующий меня работать быстрее, за что ему огромное спасибо!

Ссылки