(G) IntelInside

128
Рейтинг

IntelInside



  •   Регистрация: 09.10.2012 (11 лет назад)

  •   Был(а) на сайте: 09.03.2024

Подписчики 2

Группы

Профессиональный разработчик

Рейтинг 128

1С+Классы. Версия-0

Инструменты и обработки Программист Платформа 1С v8.3 Конфигурации 1cv8 Windows Абонемент ($m) Архив с данными Разработка внешних компонент Математика и алгоритмы

Разработано ООП-расширение языка 1С, включающее (но не ограничивающееся): Классы как абстрактные типы данных с элементами «переменная», «свойство», «функция», «процедура»; Интерфейсы как абстрактные классы без элементов состояния («переменная») и без привязки к реализации методов (свойств, процедур, функций) при определении; Имплементация (реализация) интерфейсов классами; - одиночное открытое наследование; Области видимости «внутренняя» (private), «экспорт» (public), «защищенная» (protected); Статические элементы классов (общие для всех экземпляров класса); Замещение (переопределение реализации) методов при наследовании – «виртуальные методы, свойства»; Сокрытие (затенение) обычных (не замещаемых) элементов при наследовании; Перегрузка процедур и функций по количеству и типам данных аргументов; Конструкторы класса; Деструктор класса; Слабые ссылки; Делегаты.

1 стартмани

28.10.2016    29451    7    IntelInside    68       

53

1С с "плюсами"

Статья Программист Платформа 1С v8.3 Бесплатно (free) Нет файла Разработка внешних компонент Математика и алгоритмы Универсальные функции

- Разработана методика подключения внешней компоненты, снимающая ограничения на типы данных аргументов и возвращаемого значения. - Проведено документирование основных типов данных (объектов, интерфейсов) платформы. - Разработан объект «Делегат» для реализации функциональных объектов (указатель-на-функцию). - Разработана концепция итератора произвольного доступа для основных контейнеров платформы с целью сопряжения со стандартной C++ библиотекой. - В процессе разработки механизм 1С классов (наследование, интерфейсы) для возможности использования парадигм объектно-ориентированного программирования на уровне кода.

14.10.2015    25056    IntelInside    51       

75

Комментарии

Dev1С+Компилятор. Анонс. Что бы откомпилировать???#20 08.04.23 14:41
Пилотная версия библиотеки для интеграции 1С и с++ (ЕСБ)

Немного описана здесь
https://docs.google.com/document/d/13IRoRJTAjvyfsBqVZoiLehtfQa8MdRvFprFfwszKsdo/­
и
https://docs.google.com/document/d/1elL7J8KbqKLaciR9iZ_9AZpFdWPSr0_QpWigUtEPEcQ/­

Выложена здесь
https://github.com/int-unsigned/esb
ПубликацииОбзор имеющихся библиотек OneScript#63 23.01.18 11:06
(60) Как-то кардинально изменять язык у меня и в мыслях не было. На 1С-бейсике уже написаны миллионы строе кода. Если бог даст и что-то получится, то только надмножество языка 1С. Т.е. любой код на 1С-бейсике будет оставаться корректным кодом. Как для TypeScript любой JavaScript остается корректным. Вообще между 1С-бейсиком и JavaScript много общего. Они пытаются решить одну задачу и проходят по одним и тем же граблям. Только JavaScript впереди. Путь следующий: а) сделать язык очень-очень простым, чтобы каждая домохозяйка могла себе написать сайт бухгалтерию; б) наваракозить на этом очень-очень простом языке целый ангуляр ЕРП; б) завыть матерно от 1005000 строк плохо структуированного и с трудом поддерживаемого кода; в) придумать TypeScript и все переписать. Нет другого пути. В 90-х прошлого века при переходе с С на С++ было то же самое. Либо вендор сам это сделает, либо я, либо еще кто-то, но это будет. Лучше бы, конечно, чтобы в самой 1С разум проснулся.
ПубликацииОбзор имеющихся библиотек OneScript#51 18.11.17 17:56
(50)
Хотя об очках я подумываю уже серьезно, но не настолько чтобы '++' сливалось в '#'.

В качестве вдохновения для будущего (ох...) JIT у меня на операционном столе LLVM (swift, WebAssemly, etc.). Еще MSIL я просто не потяну, да и не вижу смысла - MS меня уже один раз с VB6 кинул.

Над чем я сейчас хожу кругами - это google-gRPC компонента и, соответственно, protocol-buffers compiler для 1С-бейсик. Вернее для ES Language, который видится мне развитием 1С-бейсик. С классами, функторами, плюшками и т.п.

Я от корки до корки прочитал весь http://oscript.io , но не нашел миссии Вашего проекта. Вернее Вашего отношения к развитию языка. Вы видите OneScript исключительно классическим 1С-бейсиком? Принципиально? Тогда не удивительно, что появляются Гонец, я, '1С-Peleng' и проч. Все хотят развития, а не того же самого вид с боку. Прежде чем заняться своими классами и компиляторам я много над этим думал и пришел к выводу, что это системная проблема цивилизации 1С. Угрожающая, кстати, и самой 1С и всему сообществу.

Если Вы где-то высказывались уже на эту тему - просто киньте ссылку. Ей богу не находил.

Спасибо.
ПубликацииОбзор имеющихся библиотек OneScript#49 17.11.17 22:29
(47)
Словарь = Новый Dictionary<Строка,Целое>{{"ключ1",1},{"ключ2",2}}

Вы используете uniforn initialization form {..}. Это требует от русского программиста еще чаще переключать раскладку. Зачем? Вы explicity указываете типы для Dictionary. Зачем? Они могут быть выведены из строки инициализации. Хотелось бы видеть объявление типа Dictionary. И т.д. и т.п.

По видимому вы увлечены C# и реализуете 1С#. Но язык 1С - это Бейсик. Политика 1С - это простота. Сообщество привыкло к простому языку. Разрабатывая язык Вы в первую очередь разрабатываете синтаксис. Все языки отличаются, в конечном итоге, только синтаксисом. После того, как на языке начинают писать код, синтаксис поменять становится архисложно. Это очень большая проблема.

И вообще. На том пути по которому Вы идете расшибли лоб об стену с десяток серьезных людей. В кровь, говно и слезы расшиблись. Нужно быть очень смелым и сильным человеком, чтобы пытаться изменить мир в одиночку. Подумайте над идеей присоединиться к команде OneScript. Или... Или никогда ни с кем не советуйтесь. Это делает человека слабее. Свое видение мира в мир нужно "вбить" и он покорится.

Удачи. Я думаю Вы сделаете правильный выбор.
ПубликацииОбзор имеющихся библиотек OneScript#48 17.11.17 21:37
(24)
Цитата
Меня больше волнует другой момент: зачем сообществу несколько несовместимых движков?
Ответ:
1) Политика 1С
2) Амбиции
3) Проблемы монетизации
4) Невыраженность Миссии проекта
Можно поговорить на эти темы. Если что, то пункт "2" я перерос. Большое дело можно сделать только командой и никак иначе.

Почему 1с++ v7 так и не дал БСП++? Бух++? и т.д.++?
ВК1С+Классы. Версия-0#67 16.11.17 13:14
(66)
(66)
Относительно синтаксиса реализации ООП. Язык 1С называется 1С-Бейсик. Поэтому я и пытался делать "по-бейсиковски", а не "по-питоновски".

Относительно читабельности\писабельности кода не-программистами. Эта теория 60-х годов прошлого века является утопией. Программист - это профессия и у него должны быть профессиональные знания, навыки и инструментарий. Не будет ООП понятен "и домохозяйке", как и принципиальная электрическая схема ее любимого гаджета. Увы.

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

И кстати я нашел ответ на вопрос "почему?". На хабре оказывается есть статья от 1С в которой описана политика 1С в отношении языка. Он оказывается сознательно ограничен в функциональности. СОЗНАТЕЛЬНО! <Это своеобразное сочетание мощной платформы и разумно-ограниченного прикладного языка>

А относительно работоспособности компоненты... Сами посудите - больше года после пререлиза компоненты прошло, а она работоспособна. В очередных релизах платформы ее не "запретили". Она им не мешает. Она 1С-непротиворечива. Другой вопрос, что "сознательно ограниченные в языковых возможностях" 1С-ники ее толком не понимают и применить не знают куда. Это действительно беда.

А собственно об ООП я, извините, в дискуссию ввязываться не хочу. С моей стороны это будет не гуманно.

Посмотрите еще здесь: https://forum.infostart.ru/forum9/topic178313/
ПубликацииОформление и рефакторинг сложных логических выражений#98 13.11.17 19:50
Сложные и многоэтажные логические конструкции сложны для понимания. Это зло профессии и не нужно их дополнительно усложнять. Их надо нещадно рефакторить и сводить к простым. Правдо это долго.
Фактически Вы сводите логическую конструкцию к легко читаемому виду, где в начале каждой строки стоит условие.
Для И получается легко читаемое на одном дыхании ЕСЛИ ИСТИНА-И-Условие_а-И-Условие_б. Но для ИЛИ получается ересь читаемая как ЕСЛИ ЛОЖЬ-ИЛИ-Условие_а-ИЛИ-Условие_б.
По моему, если условие не очень многоэтажное, то оно и так может читаться при хорошем форматировании. А если условие строк эдак на 15-20, то его Ваша форма только дополнительно усложнит. Его надо рефакторить.

ПС. Спасибо за мысль. а) буду делать дополнительные оптимизации к своему компилятору. б) при расширении грамматики подумаю над возможностью опустить первый операнд И\ИЛИ: ЕСЛИ И Условие_а И Условие_б; ЕСЛИ ИЛИ Условие_а ИЛИ Условие_б.

ППС. Можно завести себе для красоты константы или пока функции:

(Фантазии, перспектива)
Конст ИстинаЛюбое = Ложь ЭКСПОРТ
Конст ИстинаКаждое = Истина ЭКСПОРТ
---
ЕСЛИ ИстинаЛюбое
ИЛИ Условие_а
ИЛИ Условие_б

ЕСЛИ ИстинаКаждое
И Условие_а
И Условие_б
Dev1С+Компилятор. Анонс. Что бы откомпилировать???#6 23.09.17 0:42
(4) Спасибо, Сергей. Тоже рад Вас видеть. Я поздно увидел ваш вопрос о подвижках в в моих прошлых публикациях. Спасибо, что интересуетесь.

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

Простите, но сейчас я пойду спать. До завтра.
Dev1С+Компилятор. Анонс. Что бы откомпилировать???#1 22.09.17 22:09
Доброго времени суток.
Этот материал изначально готовился как публикация, но модератор сказал идти с ним на форум. Полностью почитать с картинками можно скачав файл. Здесь выжимки.

Разрабатывается компилятор языка 1С в машинные коды. Компилятор разрабатывается на на основе LLVM\Clang компилятора С++. В результате компиляции получается DLL-файл наитивной компоненты для 1С, которую можно подключать обычным способом. Из компоненты допустимо вызывать все методы свойства платформы (*), все экспортируемые методы модулей конфигурации и глобального контекста и все допустимые объекты. Везде где можно используются родные механизмы платформы, а где они не доступны функциональность реализована идентично функциональности платформы(**). Т.е. можно взять практически любой код из конфигуратора, откомпилировать в компоненту и подключить в откомпилированном виде. Компилятор реализован в монолитном виде и никакая «специфика» работы с платформой не раскрывается.

Компилятор находится на финальной стадии разработки и в скором времени будет опубликован. В базовой функциональности он будет бесплатен и свободен для использования в целях ознакомления и обучения. Особое внимание в этот раз я хочу уделить демонстрационному примеру использования компилятора. В своей прошлой статье об ООП для 1С я его выбрал неудачно, что вызвало массу нареканий. Здесь я хотел бы сначала посоветоваться с сообществом и уже потом публиковать релиз. Конечно, сразу возникают мысли откомпилировать целиком какую-нибудь типовую конфигурацию или хотя бы сделать БСП.dll, но это слишком масштабно для примера. Также я очень благодарен MAGAZKA за предложение откомпилировать ее всю сверху донизу и пренепременно этим займусь, но все таки сразу после того как у меня заработает демонстрационный пример.
Что откомпилировать не такой простой вопрос. Кода должно быть все-таки относительно немного и на нем можно было бы демонстрировать производительность. Он должен быть достаточно разносторонним, а не только математика. Он должен иметь какую-то практическую пользу дабы люди его реально запускали и жаловались мне если что не так. Увы, но реализовать 1000++ юнит тестов для компилятора я не в состоянии. Также нужно учесть, что компилируются общие модули, а не модули объектов. Вернее откомпилировать-то можно, но подключить компоненту объекту виде модуля легальными средствами 1С нельзя. Также глобальный модуль после компиляции сам собой легально не станет глобальным.
Буду очень благодарен за идеи и помощь.

Очень большая просьба перед тем как задать вопрос почитать статью. Очень!

НИКАКИХ КОММЕНТАРИЕВ ПО ВНУТРЕННЕМУ УСТРОЙСТВУ ПЛАТФОРМЫ Я НЕ ДАЮ.

Прикрепленные файлы:

1C + Компилятор. Достигнутое и перспективы.docx
ВК1С+Классы. Версия-0#38 02.11.16 18:36
(16) eugeniezheludkov,
:) Вся компонента так написана. Пока. Но придет черед сурового gcc и придется рефакторить. Но это даже хорошо. Чем больше рефакторишь, тем меньше кода. А чем меньше кода, тем меньше глюков.