Перфолента, первое знакомство. Новый язык программирования
Разработка - Инструментарий разработчика
русский язык программирования Перфолента Net Framework компилятор программа дистрибутив Промкод Сергей Рогаткин
Привет, Мир!
Прошу любить и жаловать, на сцену выходит новый язык программирования Перфолента. Перфолента это язык общего назначения с русскоязычным синтаксисом и стандартной библиотекой, который может быть полезен при написании широкого круга приложений. Это могут быть простые и сложные консольные утилиты, оконные приложения с пользовательским интерфейсом, библиотеки классов, службы Windows, сетевые приложения и много чего ещё.
Программистам 1С Перфолента пригодится в качестве инструмента для создания независимых от платформы приложений, а возможно и как инструмент для создания внешних компонент. Речь ни в коем случае не идет о замене или альтернативе 1С, вряд ли один человек может написать такую замену за какое-либо разумное время, а времени на разработку Перфоленты ушло очень много.
Язык Перфолента будет очень полезен и удобен для начинающих программистов, в том числе для детей, т. к. в нем используются большинство современных русскоязычных терминов из области программирования. Правда, для этого необходимы учебные материалы и пособия, которые только предстоит создать.
Прежде, чем перейти к краткому описанию языка, скажу несколько слов о том, почему этот язык появился на свет.
Я программирую с юношеских лет, с 1986-го года, и все языки программирования, которые я осваивал, были англоязычными. Только в 1996-м, когда появилась платформа 1С версии 7.5, я начал писать свои первые программы на русском языке. Как оказалось, это здорово! Да, ключевые слова и идентификаторы на русском языке несколько длиннее, чем на английском, но меня это ни сколько не беспокоило, т. к. печатать на клавиатуре на родном языке я могу намного быстрее, чем на не родном. Да и читаются программы на русском языке так же легче и приятнее. Одна проблема, 1С предложила очень скромный по возможностям язык программирования, ограниченный рамками платформы, на котором даже простой консольной утилиты не напишешь. Поэтому я, как и очень многие другие программисты 1С сразу стал мечтать о полноценном ООП языке, с классами и другими плюшками современных языков.
Задумался я над созданием языка своей мечты только с появлением платформы Net Framework, т. к. её разработчики предложили множество инструментов для создания компиляторов. Жаль, что решился делать далеко не сразу, первые попытки были сделаны только в 2010-м году, спустя 10 лет после выхода Net Framework. Лучше поздно, чем никогда. Но после первой пробы пера проект по разным причинам был заброшен и вернулся к нему я только в 2016-м. Если бы я знал, что скоро выйдет такой замечательный продукт как OneScript, то возможно Перфоленты бы и не было. Однако, когда я узнал про OneScript, у меня уже работали программки на своем языке и бросить проект было жалко, хотя я и понимал, что даже до альфа-версии ещё очень далеко. Правда, я и тут ошибся, недооценил объем работы, особенно с учетом того, что свободного времени на разработку у меня очень мало, все уходит на основную работу, бросить которую естественно нельзя по понятным причинам, семья, дети. Так что до версии 1.0 еще далеко, но то, что уже есть, позволяет познакомиться с языком и даже написать что-то полезное. Так что присоединяйтесь, особенно если вы энтузиаст.
Перфолента, в отличие от языков 1С и OneScript, является компилируемым языком со статической типизацией, но с элементами динамической типизации, которая используется по мере необходимости. Перфолента основана на технологии Net и полностью интегрирована в неё. Это значит, что вы можете использовать любые библиотеки, написанные на любых Net языках, как родные. И наоборот, библиотеки написанные на Перфоленте, как родные, можно использовать в проектах на других Net языках. Статическая типизация и компиляция дают программам написанным на Перфоленте высокую скорость работы. В некоторых тестах эта скорость выше, чем у языка 1С в 500 раз! По сравнению с языком OneScript скорость может быть выше более, чем в 300 раз. Конечно, это не значит, что любая ваша программа будет выполняться на столько быстрее. Тот же OneScript, во многих случаях использует те же самые библиотечные функции Net, что и Перфолента, и в этих случаях он будет отставать не так сильно.
Компилятор Перфоленты написан «с нуля» и производит непосредственную компиляцию исходного текста в IL (низкоуровневый язык виртуальной машины Net), так же, как это делают компиляторы других Net языков, C#, Vb.Net и т.д.
Итак, приступим. Наша первая программа выглядит просто:
Программа ПриветМир
Процедура Старт
ВыводСтроки "Привет, Мир!"
КонецПроцедуры
КонецПрограммы
Повторюсь, Перфолента является компилируемым языком. А это значит, что после работы компилятора мы получим исполняемый EXE файл, который можно запустить на выполнение, или библиотечный DLL файл, экспортируемые объекты которого мы сможем использовать в других программах.
Перфолента является языком со статической типизацией, что для программистов 1С может быть непривычно, но привыкнуть совсем не тяжело. Программист при написании программы все равно должен думать о том какой тип данных находится в переменной или какой тип данных можно передать в конкретную функцию.
В Перфоленте предопределено значительно больше встроенных типов данных, чем в языках 1С и OneScript. Но, в основном, дополнительные типы представлены числовыми типами различной длины. Казалось бы, зачем столько числовых типов, если можно обойтись одним, как в 1С? Все дело в эффективности хранения чисел в памяти и скорости их обработки. Зачем хранить целое число в формате числа с плавающей точкой, если на это требуется больше памяти и вычисления становятся более затратными?
Язык Перфолента потребует от вас строгого соблюдения правил приведения типов при присваивании переменным или передаче в функции и процедуры. Однако, язык допускает во многих случаях, что тип определяется неявным описанием. Например:
Перем А тип Целое = 1 //явное объявление типа переменной типа Целое
Б=1 //неявное объявление переменной типа Целое
Стр="Это моя строка" //неявное объявление переменной типа Строка
При неявном объявлении, тип присваивается переменной тогда, когда она встречается в коде первый раз, и больше не может быть изменен.
Синтаксис языка Перфолента базируется на языке 1С, поэтому вы можете писать почти так, как привыкли, хотя многие языковые конструкции можно писать короче, чем в языке 1С, но изменять привычкам не обязательно. Например, полное объявление цикла Для Каждого на Перфоленте выглядит так:
Для Каждого СтрокаТЧ тип Строка Из КоллекцияСтрок Цикл
//...
КонецЦикла
но можно записать его короче, т. к. некоторые ключевые слова и определение типа не обязательны:
Для СтрокаТЧ Из КоллекцияСтрок
//...
КонецЦикла
а можно просто «по-одинэсному»:
Для Каждого СтрокаТЧ Из КоллекцияСтрок Цикл
//...
КонецЦикла;
В случае «укороченной» записи, компилятор сам поймет, что цикл «для каждого» и определит тип переменной СтрокаТЧ.
То же самое касается и многих других операторов, например, условный оператор Если можно записать «по-одинэсному»:
Если Условие Тогда
Действие();
КонецЕсли;
А можно записать немного короче:
Если Условие
Действие
КонецЕсли
Ключевое слово Тогда, а также, точки с запятой и пустые круглые скобки, в Перфоленте не обязательны.
А что, если вы хотите создать класс? Так и пишите:
Класс МойКласс
//....
КонецКласса
Надо унаследовать один класс от другого? Не проблема:
Класс МойКласс Родитель КлассРодитель
//....
КонецКласса
Естественно, что языковых конструкций и ключевых слов в Перфоленте значительно больше, чем в языке 1С, так что учить их придется, но не думаю, что это вызовет большие проблемы. Больше возможностей, значит больше языковых конструкций, а куда тут денешься?
В языке Перфолента предусмотрены многие конструкции имеющиеся в самых современных языках программирования, например, классы, структуры, интерфейсы, перечисления, делегаты, события, массивы, кортежи, срезы, индексаторы, инициализаторы и т.д. Со временем всё будет документировано, но пока многие нюансы можно узнать только разбирая примеры идущие в комплекте с компилятором.
Многое в Перфоленте ещё не доделано и поэтому не включено в предлагаемой пробной версии, например, анонимные функции и замыкания пока отсутствуют, хотя, надеюсь, что это ненадолго, т.к. эксперименты с ними у меня уже идут. На данном этапе вы можете столкнуться с разнообразными ошибками и недоделками. Если вы что-то написали, а оно не компилируется или падает во время выполнения, просто пойдите другим путем и обязательно сообщите о найденной ошибке.
Документация и справка сейчас активно пишутся, а пока пользуйтесь тем что есть в дистрибутиве. Из меню Справка, прилагаемого редактора кода, можно вызвать справочный файл, в котором можно посмотреть свойства и методы множества объектов стандартной библиотеки языка. Частично работает IntelliSense при нажатии сочетания клавиш Ctrl+Пробел и при нажатии точки. Посмотрите примеры, попробуйте сами что-то написать. Для человека любящего программирование это должно быть интересно.
Примеров в дистрибутиве довольно много, вполне достаточно, что бы ознакомиться с языком и начать программировать.
Кроссплатформенность пока не поддерживается, точнее существует по приципу «как есть». За время разработки компилятор успел «переехать» с платформы Net Framework 3.5 на версию 4, а затем и на 4.5.2. Теперь планируется переезд на Net Core 3, где с кроссплатформенностью уже должно быть все в порядке. На данный момент, разрабатывать программы на Перфоленте можно только под Windows, но откомпилированные программы вполне могут запускаться под Линукс. По крайней мере, из проверенных мной и другими людьми примеров, более половины работали на Линуксе нормально. Однако, вся работа над кроссплатформенностью еще впереди.
Эта версия компилятора имеет статус «демонстратор технологии», т.е. имеет не законченный вид. Выход «Альфа» версии, в которой будет почти всё, что готовится к первому релизу, планируется к новому году! А дальше полгода на выпуск «Бета» версии, и еще полгода на выпуск первого стабильного релиза. Это, конечно, только планы, в которые жизнь может внести свои коррективы.
Выход в Open Source пока не планируется. Это может произойти не раньше, чем компилятор и стандартная библиотека не будут переписаны на Перфоленту. Компилятор должен уметь компилировать сам себя, только тогда я буду считать, что он готов. Но сначала я хочу обеспечить его полную работоспособность и стабильность и только потом осуществить перевод при помощи средства автоматического перевода, которые тоже уже есть, но пока в лабораторном состоянии.
Очень хочется обратной связи от тех, кто заинтересуется новым языком, так что любые мысли приветствуются и будут учтены. На вопросы «кому это надо?» я отвечать не буду, так что прошу их не задавать. На данный момент уже есть люди, кому это надо, не считая меня. Гораздо интереснее общаться с теми, кто посмотрел, попробовал что-то написать, подумал и высказал замечания, пожелания и предложения.
Выражаю благодарность Андрею Ошнурову и Владимиру Васильеву за моральную поддержку и первые попытки писать на Перфоленте.
Скачать файлы
Наименование | Файл | Версия | Размер | |||
---|---|---|---|---|---|---|
Дистрибутив языка программирования Перфолента.
.exe 22,33Mb
22.07.19
108
|
.exe | 0.3.0 | 22,33Mb | 108 | Скачать бесплатно |
Специальные предложения
а на перетекание программистов из 1С в мир Net, Перфолента если когда и повлияет, то очень не скоро... 1С это огромная махина, с ней только сопоставимая по ресурсам корпорация могла бы сразиться...
а у меня, даже просто донести до множества людей, что Перфолента существует и мотивировать их попробовать, уже проблема...
Не важно какой язык используется для написания программы русский или английский. Главное какую функциональность программа выполняет и простота написания программы для программиста. По моему мнению, русский для русскоязычного человека воспринимается визуально легче анлийского
Единственное что - хотелось бы видеть исходники на github, чтобы люди могли вносить свои изменения/исправления и развивать проект
Английский "настоящему" программисту сейчас действительно нужен, но это как раз потому, что мы более 30 лет потеряли и не развивали своё... сейчас ситуация стала лучше... 1С очень развилась, OneScript подхватил эстафету, надеюсь, что и Перфолента в этом ряду лишней не будет...
Есть еще тема где русский язык будет хорош... я собираюсь плотно заняться надиктовкой текстов программ и готовлю к этому язык... надиктовывать разнообразные кавычки, скобочки и значки очень не удобно, как и англообразные слова...
Русский и читается легче и пишется быстрее, родной язык как ни как...
Исходники скорее всего и окажутся в опенсорсе, но не сейчас, рано, как я и написал в статье, сначала я переведу их на Перфоленту, а потом уже можно и в люди отдавать...
Пробуйте, по крайней мере это интересно...
гос. поддержка обязательно нужна в этом вопросе... и она даже есть в каком-то объеме... например, школьный язык КуМир делается и поддерживается за бюджетные деньги... но, конечно, это мало... слишком мало...
гос. поддержка обязательно нужна в этом вопросе... и она даже есть в каком-то объеме... например, школьный язык КуМир делается и поддерживается за бюджетные деньги... но, конечно, это мало... слишком мало...
Просто все, что делается, как-то расходится со словами чиновников про нехватку программистов. Я лично знаю примеры, когда люди не шли в программирование только потому, что оно им не понравилось в школе
Это, если угодно, 1С.NET, т.е. язык компилируемый полностью в MSIL. Пожалуй, что это интересно. Из того, что мне кажется минусом (хотя, кто-то назовет это плюсом) - это строгая типизация (переменные надо объявлять, товарищи 1Сники) и дополнения к синтаксису, диктуемые средой .NET. Т.е. придется выучить конструкции которых в 1С нет и не предвидится: пространства имен, классы, строгие типы и т.п. У меня есть опасение, что проще сразу выучить C# или Visual Basic (как наиболее близкий синтаксически)
Тем не менее, это действительно огромная работа и потенциал у нее есть. Я желаю проекту удачи.
мне ваш OneScript нравится и я даже им пользуюсь... симбиоз вполне возможен... из Перфоленты можно вызывать скрипты и наоборот... чуть-чуть осталось допилить Перфоленту, что бы можно было на ней библиотеки для OneScript делать (атрибуты классов и методов еще нельзя устанавливать, а для создания библиотек OneScript они нужны)...
Строгая типизация не сильно сложна для одинэсников, как я уже убедился общаясь с теми, кто попробовал... все равно каждый программист думает о том, что у него в переменных находится и какого типа параметры должны передаваться в методы... тем более, что в большинстве случаев можно на типизацию забить и пользоваться неявным объявлением переменных...
Я за разумный выбор инструмента... если основной вид существования программы это исходный текст, то OneScript отличный выбор, а если программа делается для пользователей и основной ее жизненный цикл не связан с правкой исходного кода, то компилируемая программа лучше...
Программы написанные на Перфоленте могут запуститься на XP, а могут и не запуститься, смотря какие возможности языка и стандартной библиотеки использованы...
История моего проекта 1C# аналогична истории Перфоленты. Я так же, как и автор, ждал несколько лет, чтобы обнародовать результаты. В конечном итоге я пришёл к выводу, что всё это от излишнего перфекционизма и неуверенности в себе.
Сейчас всё настолько быстро меняется, что времени ждать пока продукт будет "идеальным" нет! Выкладывайтесь на GitHub! Будьте уверены - Ваш проект прекрасен!
По поводу перспектив Перфоленты: думаю наиболее вероятной нишей будет являться разработка внешних компонент или отдельно стоящих приложений для 1С.
Ещё раз желаю Вам успеха!
Да, неуверенность в том, что проект оценят присутствовала долго... но после того, как некоторые товарищи попробовали и дали оценку, стало понятно, что уже можно показать всем...
И все же, работы до реального продукта еще много, а свободного времени мало, основная работа и семья сильно размахнуться не дают. По плану еще полтора года до настоящего первого релиза.
да, к сожалению, редактор пока однооконный, но это только потому, что таким он родился в самом начале... конечно, он таким не останется и в ближайшее время станет многооконным... а пока, можно несколько файлов из папки в нескольких окнах открывать, если надо...
Вы похоже из "настоящих" программистов?
Как писал ДанЭпплман: ".. коллеги, работавшие на С++, часто задирали носы и говорили: "Visual Basic - не настоящий объектно-ориентированный язык. В настоящем объектно-ориентированном языке есть полноценное наследование". Услышав это, бедный программист VB удалялся в свою каморку и за час выдавал больше кода, чем программист С++ мог написать за целую неделю."
П.С. пока я писал ответ, ругательный комментарий (29) куда-то исчез, не знаю, то-ли модераторы удалили, то-ли сам писавший... но я решил оставить этот ответ из-за цитаты Дана Эпплмана, которая отвечает на часто встречающуюся придирку к языкам вроде 1С, OneScript, VB, а теперь вот и Перфоленты...
Ну и для пущего прикола (с широкими практическими возможностями) - круто было бы хотя бы ограничено компилировать в инструкции стековой машины 1С (кстати язык для текстового представления таких инструкций тут совсем недавно уже был
Из замечаний по синтаксису (из увиденного в статье) - я бы посоветовал Вам не увлекаться несколькими подряд идущими ключевыми словами, больше задействовать в широком смысле знаки табуляции (то же ":") , ввести-таки программные скобки "{ }" - практически ставшие стандартом разграничения блоков алгоритмов в современных языках программирования (стиль 1С аля фортран/бейсик уж очень неказисто выглядит, особенно на русском - с его "бедой" разными окончаниями в зависимости от падежа и числа). И вообще - ориентируйтесь на лексическое представление алгоритмов одного из самых современных языков - Kotlin - он во многом очень изящен и лишён большинства пережитков прошлого (коими тяготятся многие другие языки программирования, особенно язык 1С). Но я не говорю - что Kotlin - это идеальный язык программирования.
Статическая типизация это хорошо. Надо полагать и выведение типов есть - это современно. Это надо развивать. Но и динамическую типизацию тоже надо иметь - в среде 1С она хоть и не требуется очень часто - но порой очень востребована. Даже C# имеет dynamic квазитип - для эмуляции работы с динамическими типами. С# только нехватает описания ограничений на возможные типы (что есть в некоторых других языках для .NET Framework)
Одно важное замечание - пожалуйста - сделайте необходимым объявлять локальные переменные всегда через ключевое слово "Перем" (в любом месте программы конечно же - аналогично "var" как в C#) - сейчас в языке 1С это не требуется - и это чревато ошибками (явными и будущими - которые могут появляться вследствие изменения внешнего кода) - когда вместо инициализации локальной переменной - изменяется значение переменной/реквизита внешнего владельца: ну там формы, объекта, класса...). Ну и хорошо иметь возможность переопределить переменную (в т.ч.) другим типом значения - в другом месте того же кода - снова написав "Перем" - но это уже не так критично.
Ну и, иммутабельные переменные тоже хорошо бы ввести.
Кстати, чем ключевое слово "Перем" отличается от "Поле"?
То что убрали ";" выглядит очень не привычно - всё-таки современные языки программирования чаще всего их требуют - и я считаю это правильно - это упрощает понимание границ нахождения инструкций - и может существенно облегчить синтаксический разбор и возможности расширения синтаксиса в будущем.
Поддержка многопоточности - это тоже очень здорово. Интересно узнать подробнее про выбранную модель.
Хорошо бы иметь асинхронные функции. Ну или выбрать модель Kotlin'овских корутинов - она вообще шикарна и очень универсальна!
В любом случае - Ваш проект шикарен - так держать, и развивать его семимильными шагами!
Ну и переход на OpenSource - это было бы вообще супершикарно, и повзволило бы разивать проект не только одному лишь Вам, если, конечно, у Вас нет планов по жёсткой монетизации проекта, и Вы не хотите всё делать только самостоятельно!
вот не согласен, ибо это превратит из разработки "как в 1С только круче", в "очередной си-образный язык, по-русски, но зачем?"
Насколько я понял автора то его прямая аудитория это 1С-ники которым мало штатного функционала платформы и они хотят "почти на 1с" писать системные приложения. Если концепция такая то и концептуально синтаксис перфоленты должен быть похож на 1С, что бы можно было сделать "по-одинэсному".
(34)
вот с этим согласен, как раз из тех же соображений, как в 1С.
Это не Си образная концепция - это уже каноническая и широкопринятая современная концепция выделения блоков алгоритмов. А Вариант синтаксиса 1С - это отсылка к 50-м годам прошлого (!) века и к Фортрану - давно уже устаревшая концепция. Имеющая целую кучу недостатков - и практически вымершая среди актуальных императивных языков программирования. Отчасти сохранилась только в Visual Basic - но это особый случай.
Даже Pascal появившийся в 1970 году уже имел единую концепцию программных скобок "begin end" (просто язык Си появился на два года позже - 1972 году - и ввёл ещё более простые и лаконичные - фигурные скобки - это и есть эволюция)
в Перфоленте я сделал очень многое для уменьшения писанины по сравнению с 1С, но превращать язык в подобие Си (в любом его виде) мне не хочется...
тем более, что писать руками КонецЕсли вовсе не обязательно, обычно оно само вставляется в текст автодополнением...
Ни в коем случае и не надо! Не ориентируйтесь на языки (и позаимствованные из них концепции других языков, не сыскавших массовости) которым почти полвека (и больше)! Ориентируйтесь на языки, которые появились в XXI веке - и смотрите на то, что в этих языках массово и неизменно уже почти полвека - это ведь не спроста так! Если, конечно, не готовы рискнуть - и выкатить что-то ещё более оригинальное, чем было предложено в этих языках (как, скажем в языке Kotlin, к примеру взяли и упразднили Поля у Классов - но это пример слабого риска; Более рискованным, например, было появление в Nemerle принципа выведения типов, или того - что все инструкции языка - это всегда выражения - я правда не уверен, что это всё первым появилось в Nemerle - но тогда это было совсем в новинку; Или появление встроенной в язык поддержки парадигмы Контрактного программирования в языке Eiffel, к сожалению пока так и не сыскавшей широкого распространения, хоть и потихоньку внедряемой в разных языках - но чаще всего на уровне библиотек, а не в составе синтаксиса языка; или в том же языке Eiffel - реализованная встроенная поддержка Аспектнориентированного программирования - мощнейшая вещь, которой, кстати, так не хватает в 1С (как и контрактов)).
Ну я красота синтаксиса языка Scala - меня всегда впечатляла - хотя да, язык не самый простой для программирования, хотя уже готовый код читается очень легко!
я рассматривал много языков, когда пытался отобрать подходы для Перфоленты, потянул из них всё, что приглянулось и вписывалось в рамки уже созданного... куда будет эволюционировать Перфолента еще не понятно, т.к. еще и полностью готового первого релиза нет... сравните C# версии 1 и версии 8, очень большая разница... а у меня пока версия 0.3 и многие штучки из разных современных языков уже есть, но многие еще не доделаны... я сначала доделаю все, что задумал, а потом эволюционировать начну... таков план...
С чем-то из ваших советов по языку я согласен, а с чем-то нет... например, различные скобочки и значки я стараюсь минимизировать... я планирую сделать нормальную надиктовку программы (с помощью нейросетей), а надиктовывать знаки препинания и скобки неудобно...
Однако, все равно я скобочки вынужден был в язык ввести, все три вида, () для параметров, [ ] для индексаторов и { } для инициализаторов...
На счет изящества языков вопрос всегда спорный, минимум 10 лет, с начала 90-х, я из каждого утюга слушал об изяществе, выразительности и эллегантности С++, потом вдруг он оказался сложным и неприятным... теперь вот Питон изящный и Котлин... а на самом деле это вопрос привычки и предпочтения конкретных людей... мне как раз нравится, когда я вижу концы операторов и понимаю, что во что вложено выше по тексту... а скобочки }}}}} ничего мне не говорят о том, что там выше по тексту делается... склонять для меня не проблема, я же русский, а не англичанин...
динамическая типизация в Перфоленте есть, даже не надо ничего писать типа dynamic... просто вызываете метод, а он свяжется во время выполнения, если он есть и параметры подходят...
";" я не убрал, просто она не обязательна во многих случаях, хотите ставьте, хотите нет... а если все в одну строку будете писать, тогда ; обязательна...
Перем только для переменных, переменные "живут" в методах... Поля (fields) существуют у объектов это общепринятая терминология... есть еще Конст, константы, их естественно нельзя изменять...
про монетизацию проекта я пока ничего не решил, надо подумать за счет чего он будет существовать, а главное быстро развиваться... в модели опенсорса обычно проект хорошо развивается, если находятся спонсоры, и так же умирает, если спонсорам надоело... а без спонсоров обычно развитие стагнирует и идет крайне медленно...
где-то так... еще раз спасибо! мне сейчас моральная поддержка очень важна.. да и идеи я стараюсь анализировать все, что поступают.. (из Котлина и Питона я тоже кое что потянул :))
(обычно справа), но может быть использован и в качестве других операторов (например оператором разделения ветвей условного оператора).При надиктовке же - можно сделать фонетический сахар - когда говорят "тип" - то если контекст подразумевает определение типа - выводить ":" - это нормально как раз.
Вот Вы же сами вводите индексаторы пример "Поле А тип Целое[,]" - проговаривать плоские скобки ничуть не удобнее чем двоеточие (даже хуже). Поэтому фонетически можно было бы говорить так (слова "добавить", "публичный" тут может быть не обязательно): "добавить публичный поле а тип целое массив размерность два" (увы, как я писал, русский язык очень скверен для фонетического разбора из-за окончаний - поэтому тут приходится говорить всё в именительном падеже - хотя разбор окончаний тоже можно бы сделать - но это напорядки сложнее - но без этого фонтетически это произносить будет криво при любом раскладе). А анализатор запишет лексически более правильно (считаем члены класса по умолчанию публичными, хотя не во всех языках это так - но как раз публичной поумолчльностью я согласен на все 100%, кроме, как раз таки, определения полей): "Поле А : Целое[,]".
Аналогично про фигурные скобки - использование как инициализатора - это хорошо - но опять-таки если цель упростить язык - то лучше использовать фигурные скобки как скобки любого программного кода - это упрощает и синтаксический анализатор, и восприятие этого программного кода - делая его более лаконичным, коротким (это удобно и при наборе и при восприятии набранного текста), с меньшим числом встроенных ключевых слов которые надо знать.
Опять таки, посмотрите Kotlin - как он изящно обрабатывает фигурные скобки в своих лексических конструкциях.
Фигурные скобки - фактически стандрат современных языков - мне прискорбно, что Вы, желая сделать более современную версию языка 1С, не захотели избавиться от весомого пережитка прошлого, сделав реализацию наиболее привычной для общего круга программистов, а не только для тех, кто кроме языка 1С больше ничего не знает.
Но да, я понимаю, что фигурные скобки в развитии 1С-подобного языка - это один из самых серьёзных камней преткновения, способный породить тот ещё холивор среди 1С программистов, хотя для остальных - это как раз дело обыденное и уже привычное!
Фигурные скобки - это же давно не только C/C++
Кстати, будут скобки фугурные или операторные - если вложений много - то Вы всё равно в них запутаетесь - это плохой дизайн. Если внутри длинные алгоритмы на несколько экранов с несколькими уровням вложенности туда-сюда гуляющими (на несколько экранов) - Вы всё равно в них запутаетесь - это плохой дизайн.
Ну а подсказки - где какой блок закончился - может дать IDE - но это отдельная тема.
По поводу Полей - был удивлён наличием Полей у секции "Программа" - не понимаю вообще зачем она нужна - вполне можно было сделать как во многих ООП языках - У какого-то класса какой-то метод назначается точкой входа в программу - если это не библиотека.
Ещё, опять-таки, посмотрите на Kotlin - там реализована отличная идея насчет Полей и Свойств классов - а именно, там нет прямого синтаксиса для определения Полей - только Свойства (Поля создаются неявно при компиляции, при необходимости) - это очень удобная идея, чтобы не плодить лишние синтаксические сущности и ограничиться только единой концепцией лексического определения свойств классов.
По поводу динамичности я имел в виду немного другое, что то типа такого:
Перем А : Динамик = 1; //Целое (или писать так Динамик А = 1)
А = А.КакСтрока() //Строка, применяется статический метод расширения для типа Целое с неявной передачей значения
А = Целое.ИзСтроки(А) //Целое, применяется статический метод расширения типа Целое
А = Новый Класс1 //Ну там какой-то класс
А = Дробное(А.Метод1(), 5) //Дробное() {Точность=5}, Допустим Класс1.Метод1() возвращает Целое, но мы его конвертируем в Дробное с заданной точностью = 5
То есть, А постоянно меняет тип - это возможно в C# (dynamic A = 1; А = "1"; А = 2.4f) и это бывает 1С. В C# переменная A - будет иметь универсальный тип "Object" - всё остальное - синтаксический сахар, разрулеваемый для компилятором - реальный IL код посмотрите сами
Но я предложил и другой вариант (не как альтернативу а как дополнение):
Перем А = 1; //Целое
Перем А = А.КакСтрока() //Строка, применяется статический метод расширения для типа Целое с неявной передачей значения
Перем А = Целое.ИзСтроки(А) //Целое, применяется статический метод расширения типа Целое
Перем А = Новый Класс1 //Ну там какой-то класс
Перем А = А.Метод1() : Дробное({Точность=5}) //Дробное() {Точность=5}, Допустим Класс1.Метод1() возвращает Целое, но мы его конвертируем в Дробное с заданной точностью = 5 - привёл другой синтаксис приведения типа; и использовал указание именованного аргумента для встроенного конструктора типа Дробное(Длинна :
Целое(Дробное.МаксДлина)=неопределено, Точность : Целое(Дробное.МаксТочность)=неопределено)
Здесь переменная каждый раз определяется заново - по факту она только в тесте алгоритма выглядит как переменная А - в сгенерированном коде - это было бы 5 разных переменных)
проверьте, если хотите... я проверял... (конечно, у разных людей будет по разному)
почитайте о переменных в Перфоленте тут:
там большая часть ваших идей описана...
Тип Объект тоже есть...
Если надо пишите:
Перем А тип Объект = Неопределено
А=5
А="ало"
А="Б"с
и т.д.
Не согласен (свои аргументы я привёл), но не буду спорить - автору виднее!
Перем А тип Объект = Неопределено
А=5
А="ало"
А="Б"с
Это хорошо
Интересно, а вот так можно:
Класс Класс1
Поле Б = 1
КонецЦкласса
Перем А тип Класс1 = Неопределено
А = А?.Б //интересно какой будет тип у А)
А = Новый Класс1()
А = А?.Б //интересно какой будет тип у А)
при беглом осмотре кода на неявных объявлениях взгляд гораздо дольше тормозит, чем на явных...
оператор ?. у меня пока не реализован... он хорош, но в нем есть неочевидности, думаю пока над ним...
а в целом, тип у А будет Класс1, как вы и заявили объявляя переменную...
Класс Класс1
Поле Б тип Целое = 1
КонецЦкласса
Перем А = Новый Класс1()
А = А.Б //интересно какой будет тип у А - По идеи должна быть ошибка
//Только так её не должно быть
Перем А тип Объект = Новый Класс1() //тип должен быть Класс1
А = А.Б //Тип должен быть Целое
А = Новый Объект //По идее тоже должно прокатить - тип должен быть Объект, верно?
Обязательно сделайте этот оператор (как и другие операторы работы с неопределенным значением, пример, присутствующие в C#) - это мировая тенденция, и есть очень много пользы от программирования в таком стиле. В 1С подобном коде вообще очень актуально, где есть составные типы данных и многие функции могут возвращать неопределенно.
Так же хорошо определять и так называемые Nullable-типы ("Целое?") допускающие неопределено, в данном случае хорошо бы запретить такое
Перем А тип Объект = Неопределено
Но разрешить такое
Перем А тип Объект? = Неопределено
Но Вы опять придерётесь к символу "?"
ну тогда хотя бы так - по длинному
Перем А тип (Объект и Неопределено) = Неопределено //или ещё иначе определять составной тип (но это уж очень длинно): Перем А составнойтип (Объект, Неопределено) = Неопределено //Где вообще могут быть несколько типов (слабо?): Перем А тип Составной {Целое, Класс1, Класс2, Неопределено} //использование инициализатора для типа "составнойтип"
Nullable это единственное слово пока, к которому я не могу придумать хороший русскоязычный термин... :)
в общем, у меня стандартно
Перем А тип Целое? = Неопределено
в дистрибутиве есть пример по операциям с Nullable
хотя, в последних версиях С# Nullable распространили и на ссылочные (объектные) типы, но у меня пока только к структурным (значимым) типам это применимо...
Перем А тип Объект = Неопределено
как и такой
Перем А тип Объект = Новый Класс1
Объект = неопределено
Но должно быть разрешено вот так
Перем А тип Объект? = Неопределено
А = неопределено
И не разрешать передавать в методы и возвращать обратно неопределено если это не разрешено)
функция Метод1(А тип Объект) тип Объект
возврат неопределено //не разрешено типом вовращаемого значения
КонецФункции
Метод1(неопределено) //Не разрещено типом аргумента А
а вот так можно
функция Метод1(А тип Объект?) тип Объект
возврат неопределено
КонецФункции
Перем Б тип Объект? = Метод1(неопределено)
Вот, не пойму Вас, с одной стороны Вы любит слова, как "тип", когда общепринято в этом случае ":" (являющийся оператором, а не просто ключевым словом кстати), с другой - не против символа "?" как директивы уточнения типа или оператора "?.". Хотя фонетически это приносить вообще нереально (вспоминая Ваш очень несостоятельный, с моей точки зрения, аргумент за применение не общепринятых слов вместо общепринятых символов).
Русский синоним Nullable действительно не просто точно подобрать, но надо ли. В 1С есть и "null" и "неопределено" (и, кстати, не против такой двоякости, но в ходу в основном только "неопределено"), поэтому понятие Nullable даже в английском варианте тут не очень уместно. Кстати, в Visual Basic вместо null используется Nothing -хотя это я лукавлю - т.к. в VS всё немного по особенному (отчасти ближе к 1С Неопределено) и Nothing не равно null и не равно DBNULL
Поэтому и в Перфоленте нужно пойти немного своим путём в определении русскоязычного термина нулабельности. Я бы как вариант использовал термин "Детерменированный тип" или от обратного "Не детерминированный тип" - т.е. в первом случае переменная типа всегда должна иметь значение заданного типа. Во втором случае - допускается наличие неопределенного значения ("неопределено" или ещё какие - если будут, а так же могут быть значения разных типов - но это уже "Составной тип").
Хотя лично я вообще против значений как "null" и "неопределено" - считаю, что это всё "от лукавого" - значения переменных и полей всегда должны быть определены. А для случая, необходимости наличия пустого значения - нужно отдельно определять его в типе переменной - как для классов так и для примитивных типов - и с ним же и сравнивать (или применять специальный оператор/функцию универсальной проверки на пустое значение)
Перем А тип Целое //Не инициализирована, но не допускает пустые значения = значению по умолчанию = Целое.ПоУмолчанию = 0)
Если А = 0 сообщить("Равно нулю")
Перем Б тип Целое? /Не инициализирована, но допускает пустые значения которые не равны значению по умолчанию; Целое.Пустое не равно 0 и вообще это не число)
Если Б = 0 сообщить("Не должно вывестись")
Если Б = Целое.Пустое сообщить("Пустое")
Б = 0
Если А = 0 сообщить("Равно нулю")
Б = Целое.Пустое
Если Б = 0 сообщить("Не должно вывестись")
Если не ЗначениеЗаполнено(Б) сообщить("Пустое") //Универсальный вариант проверки
Перем В тип Объект //Не инициализирована, не допускает пустые значения, должна быть ошибка компиляции (исключение - это определение полей классов - там проверка должна быть на выходе из конструктора)
В = Новый Класс1
Перем В тип Объект? //Не инициализирована, но допускает пустые значения, равна значению пустого объекта - которое обязано быть определено у такого класса - это просто предопределенный экземпляр данного типа
Если А = Объект.Пустое сообщить("Равен пустому объекту")
Но
Перем Г тип Класс1?
Если Г = Класс.Пустое сообщить("Равен пустому объекту типа Класс1")
Если Г = Объект.Пустое сообщить("Равенство не обязано быть - если Класс1 переопределит свойство "Пустое" базового класса "Объект" иным значением)
Если не ЗначениеЗаполнено(Г) сообщить("Пустое") //Поэтому так конечно же правильнее проверять было бы
Если Г пустое сообщить("Пустое") сообщить("Вариант универсальной проверки через оператор")
Если Г.Пустое() сообщить("Вариант универсальной проверки через встроенный метод (наследуемый от Объект)" //прикол в том, что в такой модели это всегда рабочий код - т.к. тут не бьвает неопределённых и null значений
Перем Д тип Целое
Если Д.Пустое() сообщить("Да, и так сработает") //Потому что будет вызван статический метод Пустое() у типа "Целое" а он для него определён как тоже самое что и свойство Целое.ПоУмолчанию = 0
Перем Д тип Целое? = 0
Если Д.Пустое() сообщить("Не выведет - 0 не пустое значение в для типа, допускающего пустые значения") //Потому что будет вызван статический метод Пустое() у типа "Целое?" а он для него определен особым значением и оно не равно Целое.ПоУмолчанию = 0
Перем Д тип Целое?
Если Д ЭтоПустое сообщить("Но так сработает")
Вот я бы так делал, и никаких "Неопределено" и "Null"
Да, ещё бы одно предопределённое свойство ввёл "Мертвое" - для проверки объеккта на то, что он более не актуален (т.е. после работы деструктора) - ведь пока на объект есть ссылки он должен быть в памяти - а такое свойство должно сигнализировать сслылкодержателей на то, чтобы эту ссылку отпустить но проблема деструкции и удаления объектов из памяти - это вообще отдельная и очень интересная тема!
Перем А = Новый Класс1
Перем Б = А
А = Класс1.Пустое //Объект Класс1 будет дердатиь переменная Б
А = Б
Убить А; //Деструкция обекта Класс1, и присвоение переменно А = Класс1.Пустое
Если Б.Мертвое Б = Класс1.Пустое //После этого сборщик мусора сможет очистить память
А модно было бы подписаться на убийство
Перем А = Новый Класс1
Перем Б <= А //Особый оператор "<=" - Переменная Б будет автоматически очищена при деструкции объекта Класс1
Перем В тип Класс1;
В = А;
Подписать(ПоСсылке В, "Убийство", (ПоСсылке _ => _= ТипЗнч(_).Пустое)) //Без операторра "<=" ну тут я наворотил, конечно, и передачу переменной по ссылке, и подписку на системное событие объекта, и делегаты, и лямбды и обращение к статическому полю типа значения)
Тут много чего интересного можно сделать! Например для борьбы с утечками памяти или с кешированием или с ленивыми вычислениями!
Ну и, конечно же, обращение к не статическим свойствам и методам мёртвых объектов должны приводить к ошибке (естественно обращение к статическим методам через переадресацию от переменной - это нормально):
Перем А = Новый Класс1
Убить А;
Если не А.Пустое() сообщить("Не пустая") //Эквивалентно Если не Класс1.Пустое(А) сообщить("Не пустая") // Мёртвые объекты не равны пустым
Ну как-то так - таково моё виденье решения проблемы пустых значений!
Смысл в том, что вы написали про Непределено, конечно есть... но я очень осторожно добавляю в язык дополнительные правила... возможно сделаю отключаемую опцию, что бы "параноики" могли включать "защиту" от Неопределено, а "смелые" парни пусть не заморачиваются... :)
Запишу в планы подумать над этим вопросом...
Андрей Овсянкин, автор OneScripta, выше написал, что боится, что легче будет выучить СтШарп, чем Перфоленту... я этого тоже боюсь, поэтому с радикальными новинками не спешу... пусть люди к тому, что есть хотя бы привыкнут...
Сценарий может быть другим: сидит такой 1С-ник и думает, надо мне вот такую штуку замутить... 1С не подходит, что делать, СиШарп учить или на более-менее знакомой Перфоленте попробовать? Попробовал, получилось, тогда и СиШарп не нужен...
Перфолента как мостик, если вы знаете 1С, то знаете минимум половину Перфоленты, а выучив Перфоленту вам будет легко освоить любой язык Net... а может вам её и хватит с головой... а что бы подтянулись работодатели придется доказать, что Перфолента готова к промышленной эксплуатации... сегодня она не готова... сегодня нужны энтузиасты... и хорошо, что они есть... пока мало, надеюсь будет больше...
в общем, жизнь покажет...
кстати, интересно, но некоторые люди уже попросили меня прикрутить к Перфоленте вещи, которые явно из энтерпрайза, хотя я на данный момент во весь голос кричу, что это только демонстратор технологии и надо ждать...
при этом ни каких не известных им операторов Перфоленты они просто не используют...
еще заметил маниакальное желание 1с-ников использовать многопоточность... думаю это из-за комплекса по поводу медлительности 1с..
За многопоточностью будущее - вообще считаю что все современные языки программирования должна активно к этому подталкивать, и конечно же упрощать процесс написания многопоточного программного кода.
Помните - что 64 ядерные серверные x86 процессоры появятся уже будущем году (не x86 уже были давно представлены)
Ещё десятилетие и для настольных компьютеров будут доступны 128 ядерные процессоры
А после 2040 года наличие не менее 256 ядер в настольных компьютерах будет вообще нормой (не говоря уже о серверных - где число ядер будет измеряться тысячами на сервер)
Тогда то и окончательно и бесповоротно наступит эра параллельных вычислений - весь код должен будет создаваться из расчёта максимальной асинхронности выполнения (по крайней мере, в задачах, где хоть как-то важна будет производительность, т.е. где процесс не будет тормозиться нерасторопностью интерактивной работы пользователя - хотя даже при ней - отзывчивость интерфейса должна будет быть критически быстрой - чего сейчас очень не хватает 1С Предприятию)
Но до этого ещё далеко. А пока нужны просто более удобные средства для формирования параллельного кода - в т.ч. и мастера - позволяющие конвертировать однопоточный код - в многопоточный. Ну и конечно же, нужно как можно более рано прививать начинающим программистам премудрости асинхронного программирования - чем при этом нужно жертвовать, где происходит уложение и какие будут в итоге преимущества.
Поэтому однопоточное программирование хорошо бы успеть привить уже в школе, до старших классов. А с 10-го класса уже активно изучать асинхронное программирование. Это нужно делать уже сейчас. За через десять лет число ядер в детекторных процессорах ожидаемо будет очень бурно расти. Это пока - в среднем их всего 4, но это в 2 раза больше (в среднем) - чем 8 лет назад, а уже через пару лет в среднем будет ещё в 2 раза больше - уже 8 ядер, и дальше так и будет удваиваться каждые 4-года (я про среднее число ядер в телескопных процессорах - ибо 4 года - это среднее время жизни таких компьютеров между полной сменой платформы, хотя в России конечно сейчас это может быть и 8 лет - в силу упавшей покупательской способности - но это не повлияет на мировую тенденцию).
Ещё хочу сказать, что задачи, которые возникают на клиентах, очень сильно зависят от типа клиентов: полностью автономные, с частичным серверным взаимодействием, сильно выражено клиент-серверные, облачные, терминальные (истинно тонкие клиенты, работающие по RDP). Первые два типа в той или иной степени могут иметь задачи, аналогичные серверным и клиентским. Терминальные – имеют только примитивные задачи ввода вывода, сравнимые с задачами видеоплееров – но даже тут есть процессы, требующие массового распараллеливания – например задачи сжатия и шифрования трафика, какие-то задачи оптимизации графического вывода многослойных изображений. Облачные клиенты – тоже нуждаются как в шифровании так и сжатии, но ещё и могут совершать некие вычисления на клиенте, схожие с клиент-серверными, но в меньшем объёме – обычно исключительно интерфейсные (о них ниже). Так что наиболее востребованы в массовых вычисления на клиенте пока остаются клиент-серверные программы – об этом подробнее.
Задачи, которые нуждаются в распараллеливав на клиента клиент-серверной архитектуры (помимо сжатия и шифрования, графических задач вывода примитивов – которые должны в большей степени решаться графическими ускорителями, пусть даже и встроенными в центральные чипы) это:
1. Конструирование и модифицирование интерфейсов
2. Управление выводом интерфейсных элементов, в т.ч. имеющих высок выраженную динамику изменения отображения
3. Простые вычисления формул (обычно вызываемые при интерактивной работе), которые не оптимально гонять на сервер
4. Асинхронны серверные вызовы (в т.ч. облачных сервисов), и ожидания на них
5. Принципиально фоновые процессы – например проигрывание звуков, музыки, видео, или запись действий пользователя, или базовый анализ, например, введённых текстов или цифр и их валидация
6. Задачи взаимодействия с каким-либо клиентским оборудованием
7. Отдельно вынесу задачи поиска по коллекциям на клиентах – в первую очередь по кэшированным данным – хотя по хешированным ключам поиск идёт быстро – его распараллеливание может его ещё ускорить, особенно когда такой поиск будет требовать тысячи раз в секунду из-за возросшей нагрузки на кэширование данных (особенно это будет актуально с ростом числа доступной памяти на клиентах); жаль только сами операция хеширования плохо распараллеливаются – хотя… тут тоже можно найти свои компромиссы.
8. Условно сюда же можно отнести задачу анализа речи пользователя для смарт ассистентов – но это спорная задача – просто, на мой взгляд в клиент-серверных приложениях нужна очень высокая отзывчивость смарт ассистентов, поэтому желательно основную обработку голосового взаимодействия полностью выполнять на клиенте, с редкими асинхронными серверными вызовами. Ну а со смещением сетевых скоростей к сотням гигабит, с мизерной латентностью, наращивании сервисных мощностей серверов и смещению клиентского ПО в сторону размещения в облаках – конечно же все аудио процессы и анализы полностью уйдут на серверную сторону, но на это как раз ещё понадобится несколько десятилетий
Остановлюсь на первых двух пунктах – т.к. остальные обычно сводятся просто к асинхронным вызовам, которых вряд ли на клиентах в секунду будет выполняться более нескольких десятков (хотя, задачи анализа, вынесенные, для выполнения на клиенте, могут и несколько сотен процессов запустить).
Задачи построения интерфейсов почти всегда очень хорошо распараллеливаются, но почти всегда такой программный код представляет собой попросту линейный поток инструкции (порой с циклами, которое по сути генераторы линейного потока, непересекающихся команд).
Вручную это всё распараллеливать очень сложно. А вот автоматический параллелизатор – вполне мог бы определить простые зависимости, разбить эти инструкции на группы и поставить в различные потоки – коих может быть и десятки и сотни (в зависимости от сложности построения интерфейсов).
Аналогично с управлением – ведь интерфейсы мало построить, их ещё и надо выводить – т.е. создать поставить поток команд графическому процессору. Это тоже можно распараллелить, в т.ч. в местах воевода списочных данных.
Ну и, напоследок. Думаю через 30-50 лет новым трендом (помимо смарт помощников) будут системы, осуществляющие анализ действий пользователей и их дальнейшее прогнозирование, в т.ч. в клиентской среде – тогда можно будет выполнять вычислительные процессы в фоне на опережение, в т.ч. для клиентов будут актуальные не только возросшие потоки возможных ближайший асинхронных вызовы (к серверу или от/к оборудованию), выполняемые на опережение; но параллельные процессы выполняющие построение интерфейсов так же на опережение.
Предвосхищая возражение, что интерфейсы уже сейчас сроятся не на клиенте, а на сервере – отвечу – что, кроме облачных приложений, это не лучшая идея. Сервер может подготовить схему интерфейса – создавать и настраивать сами графические элементы всё равно придётся клиентскому приложению. Ну а если дальше интерфейс динамически меняется от интерактивной работы пользователя – то тоже, смысла больше есть всё-таки выполнять инструкции на клиенте, чем на сервере (ну если только схема интерфейса не меняется слишком кардинально). А не так как сейчас в управляемых формах 1С Предприятие 8 – хочешь на клиенте поменять цвет текста элемента на форме – это «к счастью» можно сделать в клиентском контексте, но сделать можно – а реально будет серверный вызов с передачей контекста формы на сервер и обратно! БРЕД! И так с каждым элементом, если на клиенте их нужно изменить несколько (ну а перейти в серверный контекст можно только алгоритму, находящемуся в модуле формы – тот ещё БРЕД!)
Но я не спорю, что удобство со временем практически полностью переместиться в сторону тотально облачного ПО - но пока до этого далеко. Впрочем пока далеко и до мнрого-много яднрных клиентских архитектур и, соотвественно, постановок зада по программированию, чтобы суметь загружать все эти клиентские ядра. Поэтому на ближайшие десятилетия весь клиенский код так и останется линейным - с небольшими асинхронными процессами и фоновыми задачами (но только не в 1С - где паралельного программирования совсем нет ни на клиентах (ограниченные встроенные асинхронные процессы не всчёт), ни даже на серверах (фоновые задания тоже не всчёт из-за своей тяжеловесности и многих других нюансов).
Ого, ну и взгляды у вас... 1С поставила всех раком, а все такие обиженные по этому поводу... Вообще-то 1С сделала продукт, который превзошел всех по совокупности параметров и за него голосуют рублем.
Где сейчас "Галактика" и "Парус"? Они существуют, но только в госсекторе, где удалось присосаться к кормушке. Там где существуют возможность выбора - выбирают 1С (ну или SAP, если деньги есть).
В начале 90-х, когда у всех были равные возможности для старта, стартовали многие и у всех был равный шанс сделать что-то великое. 1С сделала вещь, которую покупали и покупают. Ну да, поставила конкурентов раком, но говорить что это было какое-то "насильственное" действие над пользователями - ну это неправда совсем. Только ухаживаниями, конфетами и более качественными подарками, как это и принято в приличном обществе.
да и сегодня конкурентов у 1С не видно...
Но я констатировал факт - такое бурное развитие продуктовой линейки 1С Предприятие, при слабой конкуренции - привело к тому, что доля 1С в России около 90% (простите не знаю точную цифру) всего рынка учета (по-крайней мере среди российских компаний, который не пришлю сюда с своими привычными западными системами) - это фактическая монополия. И эта монополия позволяет диктовать свои условия рынку.
Конкуренции практически нет - это не столько вина компании 1С, сколько их большая заслуга - но только в перед собой, а не перед потребителями!
Вот, потребителей и поставили раком - сейчас практически ни одна НОВАЯ и САМОСТОЯТЕЛЬНАЯ компания, где гендир в здравом уме, не будет начинать свой бизнес с учетной системы, отличной от 1С Предприятие.
Существующие компании тоже, практически поголовно работают на 1С Предприятие 8 - и соскочить с неё практически некуда. Если для управленческого учета с ростом бизнеса ещё можно присматривать другие продукты, особенно если требуется работа с западной финансовой отчетностью. То для регл учета в России альтернатив почти нет. Про другие страны мне говорить не легко.
При этом цены на 1С Предприятие 8 - компания 1С так же держит достаточно низкими (хотя при таком положении, уже могла бы их и задрать вплоть почти до целого порядка - но не делает этого, что позволяет её стабильно держать рынок - здесь сказывается грамотная маркетинговая политика, ну и нищета страны).
Вот это и есть - поставить раком потребителя!
Хотя я восхищаюсь этими достижениями и грамотным руководством компании 1С
Но я очень печалюсь, что в России так и не появилось пока хоть немного конкурентной альтернативы такого же уровня развития продукта!
Гугл тоже поставил всех раком... только Китай и Россия хоть как-то сражаются, остальные все давно лежат... даже Европа не может дергаться, ни соц сетей своих, ни даже кино уже нет...
Не нищета страны, а грамотная ценовая политика.
Отличайте от США, действительно нищей и побирающейся страны, живущий на безразмерный госдолг.
Вот там человек человек человеку волк и все стараются содрать друг с друга побольше, что даже все заводы из страны уехали кто в Китай, кто еще куда.
прежде чем браться писать что-то многопоточное, желательно сначала почитать что такое поток и какие сложности могут возникать. Для начала, хотя бы Рихтера "Windows via C++". А потом понять, для чего появились абстракции WorkQueue/WorkItem, и пул потоков. А потом придти к мысли про Task и про Parallel.For и выяснить, что даже с такими инструментами сильно облегчающими многопоточную разработку все равно приходится вспоминать что бывает atomic read и volatile, после чего воскликнуть: да блин, оказывается, нахрен мне многопоточность не впилась, мне достаточно
Вот так и сделала Microsoft в C# - но это была вынужденная мера для совместимости (приведшая к тому что так сильно нужно программистам для повышения качества и надёжности кода - в большинстве случае выключено, и, вероятно, ещё очень долго не будет использоваться) - в Вашем же случае, я бы не тянул прошлое которого у Вас нет!
Кстати, вот ещё для Nullable типа пара русскоязычных терминов (кроме уже приведённого "Не детерминированного" (мне он всё-таки больше нравится - как-то более строго звучит, но очень длинно):
- "Неопределябельный тип" - т.к. у Вас вместо null используется "неопределено" - звучит не очень, зато максимально близко к используемому термину "неопределено", но всё-таки такой вариант звучит ещё и как-то двояко - так и кажется что данный тип какой-то странный, что его нельзя определить
- "Пустоватый тип" - звучит смешно, зато максимально близко, как к переводу "Nullable", так и к отражению сути данного типа - что он может иметь пустые значения - правда это не совсем корректно говорить, в общем смысле, т.к. было верно в C# для не ссылочных типов значений - для них конструируется специальный "Nullable generic" тип. А вот для Наллабельных классов это уже не так - их тип остаётся исходным, а проверки на null делает исключительно компилятор и исключительно в рамках компилируемого кода и его типов (или подключенных библиотек, скомпилированных с такой поддержкой) - так что это уже фича не типа, а переменной. Но об этом лучше особо не заморачиваться - чтобы не забивать голову лишним.
Но, по-любому, фонетически произносить "перем а тип целое вопросик" (чтобы получить "Перем А тип Целое?") - не так красиво как "перем а тип пустоватый целое" или даже "перем а тип не детерминированный целое" (чтобы получить "Перем А тип пустоватый<Целое>" или "Перем А тип недетерминированный Целое", или "Перем А тип Целое?" (как я уже сказал ранее - нет большой проблемы в такой конвертации иной фонетической лексики, как нет проблем ту же саму фразу сконвертировать в "Перем А : Целое?")
Это палка о двух концах - когда люди к чему-то привыкают - очень сложно потом переучиваться к чему-то более сложному и радикальному - и начинаются разговоры о том что язык слишком усложняется и умирает - не то что было лет так десять назад...
Да и если сразу не закладывать хороший дизайн, с хорошим заделом на будущее - то позже вносить расширения становится всё сложнее и сложнее - пример - 1С - язык почти не меняется уже как минимум с платформы 1С 8.2 (а реально и вообще с 8.0 - т.к. особенности программирования под управляемое приложение практически не связны с нововведениями в языке, аналогично и про особенности программирования под мобильную платформу).
Да и, основной фундамент языки закладывается в период до офрелиза, и первые годы после него (где-то до версии 2.0, 3.0 максимум (с очень большой натяжкой если версия вышла не позже пары лет от офрелиза)) - через 10 лет после анонсирования кардинально менять язык уже не получится, а всякие опции лишь будут пылиться за невостребованностью. Посмотрите на Python - до сих пор чаще программируют на 2-й версии Питона, а не на 3-тьей.
Ну и делая новый язык - он всё-таки должен быть чем-то кардинально лучше чем имеющиеся - ведь без этого - какой в нём смысл и да - действительно будет проще выучить C# или Java
Ну для языка должно быть обозначено практическое и коммерческое будущее применения - то как с помощью него можно зарабатывать деньги (в исключительных случая - выполнять какую-то социальную функцию - пример - Паскаль - изначально язык задумывался только для обучения программированию), причём речь не о заработке автора языка (хотя тут тоже нужно что-то придумывать).
И обязательно должна быть какая-то совместимость с другими проектами, написанными на других языках - да так, чтобы было желание писать дальше на новом языке, а не на уже имеющихся. Нужны вишенки на торте, пуская даже и рискованные.
Вот, например, я написал Вам про фичи о пустых классах и отказа от неопределено/null - это мировая тенденция - скоро эта тема будет очень популярна - так можно было бы запрыгнуть на гребень волны пока она ещё достигла высоты "5 этажного дома"?
Аналогично про фигурные скобки - только тут волна уже с 50-этажный дом, но Вам почему-то хочется остаться под ней!
Хотя, может какой-то оригинальной фишкой станет упоминаемый вами фонетический ввод - но если эта фишка не появится в первые годы офрелиза языка - это языку уже не поможет стать популярным! А с учетом задела на русскую речь делать фонетический ввод - дело вообще крайне сложное и тут намного проще сразу "споткнуться и поломать ноги", чем сделать что-то действительно удобоваримое: ну никак не звучит красиво фонетическая лексема "добавить перем а тип целое двухмерный массив", а звучит "добавить переменную а с типом двухмерного целого массива" - и это ещё просто фонетический случай. И если разрулить окончания и порядок следования встроенных термов ещё как-то можно - то вот с пользовательскми типами, переменными членами классов всё намного сложнее. На мой взгляд, такой фонетический разбор на английском то языке крайне сложен - а уже на русском - почти утопия (по крайней мере до прихода эры AI - а вот тут, как раз, просто не паханное пространство для фишек - нужно развивать интеллектуальные способности компилятора и IDE, а так же нарабатывать базу готовых решений как по оптимизации, так и просто шаблоны готовых алгоритмов - и Mictrosoft с линейкой своих продуктов и Visual Studio уже идут этим путём - через несколько лет там уже будут встроенные Смарт ассистенты)
отвечу пунктиром:
- ваши русские варианты слова Nullable мне не нравятся (как и десяток придуманных мной) так что вопрос по прежнему открыт...
- кроме сокращения Перем в Перфоленте можно полностью писать слово Переменная, поэтому вы сможете просто сказать "переменная количество товара тип целое с неопределенностью... дальше... пока количество товара меньше, чем 10, цикл..." и т.д. (с неопределенностью это лучший термин из мной придуманных)
- все ваши замечания полезны и кое что поменяли в моем плане задач.. спасибо..
Хотя сам автор языкового термина "NULL"
Вот
Я же предложил кардинально избавить от универсального пустого значения - чтобы у объекта всегда было значения - даже если переменная только объявлена но не проинициализирована.
Хотя я тоже предлагаю разделять объявлением переменной ссылочного типа на недопускающую даже пустого значения и допускающую пустое - но всё равно - конкретное, хоть и предопределённое для данного типа, значение!
тип обнуляемое Целое...
тип обнуляемое Булево...
может быть, может быть, вроде бы не так уж и плохо звучит...
возразить можно только то, что с Неопределено это не совсем по смыслу вяжется... ноль это не Неопределено... ноль имеет тип Целое... хотя физически, в компьютере, Неопределено представляется именно нулем... можно к этому и привязаться... сделать Неопределено и Null просто синонимами...
может быть стоит даже сделать 0 синонимом Неопределено и Null-а... в ссылочном контексте разрешать 0 вместо Неопределено... это предложение вызывает противоречивые чувства из-за потери наглядности, но зато добавляется универсальность и краткость...
спасибо за не плохой вариант... буду думать, вариантов уже много, но выбрать сложно..
Сейчас окончательно решил, что буду называть типы свободными и не свободными... свободный тип имеет право содержать значение Неопределено, а не свободный не имеет такого права и всегда обязан содержать значение...
по-моему, вполне хорошо и понятно звучит..
Я бы выбрал "неопределябелный" - звучит так же криво как нуллабельный (но не более), зато все сразу поймут о чём речь
Но важнее тут другое - это сразу сделать все типы по умолчанию не допускающими значения null без специального указания при объявлении переменной - вот это действительно серьёзное решение, которое нужно принять как можно ранее, чтобы избежать как можно больше проблем в будущем (своих и проблем разработчиков). А терминология - тут потом можно называть как угодно и менять названия - ну если только они не будут ключевыми словами - а Вы любите вводить много много ключевых слов в синтаксис....
тогда пока остается "тип допускающий Неопределено" и "тип не допускающий Неопределено"...
над физической реализацией я пока думаю... в самой платформе Net это еще не реализовано, поэтому в C# это по своему сделано, на уровне компилятора... мне надо тоже как-то по своему.. но в голове еще полностью концепт не сложился...
Да и Nullable-значения (стековые, которые становятся "кучевыми") в .NET - это тоже сложно назвать чисто платформенными - ведь тут просто подмена одного типа другим при компиляции, и на уровне IL кода никаких особых команд для Nullable-типов вообще нет. Помню, когда в платформе .NET только появились Nullable-типы значений - их далеко не все .NET языки поддерживали напрямую (как native-C#) - и в них приходилось работать через класс ValueType
кстати, увидел в документации Майкрософт только что, они тоже в переводе называют:
"ссылочные типы, допускающие значение NULL и ссылочные типы, не допускающие значение NULL"
Ситуация напоминает ту, что была когда появились нуллабельные значения - нужна поддержка в других языках.
C# компилятор для объектных нуллабельных типов лишь создаёт особый атрибут в метаданных кода, но на него можно опираться при разработке компиляторов.
Фраза "ссылочные типы, допускающие значение NULL и ссылочные типы, не допускающие значение NULL" более менее хороша только для офф документации. Думаю, больше нигде её Вы не встретите - слишком длинно.
фразы из двух-трех слов для меня длинными не являются... "тип допускающий Неопределено" это нормальный термин... хотя, может что-то лучше со временем нарисуется...
Ну а для тех кто перешел с Delphi например строгая типизация это плюс даже, я например за строгую типизацию, приучает к какому то порядку в коде и в голове изначально.
Интересно, как с этим обстоит дело на Перфоленте, в силу того, что они использовали .NET Framework?
Дальше надо посмотреть на лицензию .Net Framework SDK и прочих программных средств, которые были использованы разработчиками. Вопрос склизский и нужен эксперт по лицензированию продуктов от Microsoft. Я не знаю ответа на этот вопрос, поэтому и спросил.
Dll от Перфоленты можно подключать в РФокс.
Не всё вообще можно будет так скомпилировать в стековую машину - в силу её ограниченности!
Ну и останется проблема библиотек - на разных платформах - свои библиотеки - если библиотеку нельзя так же скомпилировать - то она не будет доступна - и это большая проблема, т.к. Перфолента операется на библиотеки .NET Framework - их нет в 1С (базис конечно кое-как перенести можно - но он будет очень ограничен).
Аналогичная проблема и наоборот - когда автор говорит о возможности писать в привычном для 1С программиста стиле - например внешние компоненты - нельзя будет применять объекты и функции из библиотек 1С в таком алгоритме (хотя опять таки, частично их перенести можно - что, например сделано было для OneScript), скорее всего когда-нибудь и для Перфоленты создадут ограниченную инфраструктуру библиотек окружения 1С Предприятие 8 - тогда можно будет писать универсально как для 1С Предприятия так и внешние компоненты! Но на это видимо уйдёт ещё лет 10 , не меньше.
тогда как раз С++ набирал обороты и считался самым-самым, супер-пупер...
Кого был призван убить язык ГО, свеженький еще... ни кого не убил...
Думаю Котлин не убьет Джаву...
на самом деле, убивать никого не надо... просто еще один инструмент... подходит для решения задачи - используйте, не подходит не используйте...
да, со временем соотношение использования разных языков меняется, но большинство продолжает жить по совершенно разным причинам...
Односкрипт интерпретатор, Перфолента компилятор, зачем им сражаться? Да области применения могут пересекаться, но не совпадают... где-то лучше один язык где-то другой...
У Перфоленты другая проблема, её пока нет... то, что опубликовано вчера это демонстратор технологии... использовать можно только в личных целях... довести до промышленного образца ее еще только предстоит... смогу ли я это сделать? постараюсь...
Не смешите меня. Scala так и останется нишевым языком - не пошёл в массы - слишком навороченный язык- хотя и изящный! У Kotlin шансов больше - но и он, наверное не справится. Ждём новый язык.
Уж сколько таких языков было придумано - все туфта. Но со временем C/C++ действительно перейдут в разряд нишевых языков (Си уже почти там). Но их туда загонят языки типа C# и Kotlin (не эти так другие), на которых будет проще создавать многопоточный код с управляемой памятью, когда производительность выполнения будет не очень критична. Просто компиляторы таких языков будут создавать всё более и более оптимизированный предкомпилированный код - производительность которого будет достаточна для 70-80% всех задач. Где скорость создания весьма сложных программ и их надёжность будет цениться куда выше скорости их выполнения, с разницей в 1-10% процентов от чистого Си кода.
Ещё, как вариант - это расширение кодогенерации - когда высокоуровневый язык будет генерировать код, скажем на Си (включающий только минимально необходимые инструкции, без лишних прослоек) - а уже Си компилятор его дооптимизировать и компилировать в машинный байткод (дооптимизировать можно и вручную).
Такие квазикомпиляторы, уже есть.
А вот это всегда нужно в новых языках - что-то особенное должно цеплять, что-то чего нет у других и что реально может принести гигантскую пользу.
Например у Java такой фичей (одной из самых значимых) была система автономного управления памятью и сборщик мусора
А у Kotlin наверное - это корутины, и по умолчанию отсутствие Null значений у ссылочных типов
убить Джаву при ее распространенности это слишком сильная заявка.. только покусать можно.. заболеет, но не умрет :)
А вот на счет применения языка вы абсолютно правы... если не найдется достойного применения, то язык будет жить где-то под плинтусом... думаю над этим, но пока слишком занят самим языком...
См. также
Распаковка хранилища значений средствами MS SQL Server 15
Инструменты и обработки Программист Компонента, плагин (dll, vbs,..) MS SQL Абонемент ($m) Практика программирования
Способ извлечения данных из 1С-ного "ХранилищеЗначений" в MS SQL Server с помощью самописной скалярной функции (без использования платформы 1С).
1 стартмани
23.09.2019 3313 SerVer1C 11
С 2020 года сервис «Продление поддержки конфигурации 1С:УПП» подорожает вдвое Промо
Успейте продлить поддержку УПП до повышения цен! Фирма «1С» предупредила об изменении цен на сервис «Продление поддержки конфигурации "1С:Управление производственным предприятием"». С 1 января 2020 года сервис подорожает в два раза.
Расширяем возможности MS SQL Server с помощью хранимых процедур CLR 8
Инструменты и обработки Программист Архив с данными MS SQL Абонемент ($m) Практика программирования Разработка
Не хватает какого-то функционала на скуле для обработки данных? Тогда он (новый функционал) идет к вам.
1 стартмани
02.09.2019 4349 SerVer1C 9
Упражнения на Перфоленте. Парсим технологический журнал 1С 21
Статья Системный администратор Программист Архив с данными Windows Абонемент ($m) Сервисные утилиты Инструментарий разработчика Практика программирования Разработка
В статье рассматривается парсинг технологического журнала 1С на новом языке программирования Перфолента. Статья может быть полезна как для парсинга, так и для изучения некоторых особенностей языка.
1 стартмани
31.07.2019 4212 Perfolenta 62
Базовый курс для начинающих 1С-программистов. Пятый поток. Онлайн-курс с 12 февраля по 15 апреля 2020 г. Промо
Данный онлайн-курс является начальной ступенью по изучению базовых принципов программирования в системе “1С:Предприятие” и предназначен для обучения 1С-программированию “с нуля”.
4500/9500 рублей
В 1000 раз быстрее 12
Статья Программист Архив с данными ИТ-компания Windows Абонемент ($m) Практика программирования Разработка
Реализация алгоритма трассировки лучей на новом языке программирования "Перфолента"
1 стартмани
24.07.2019 2954 vasvl123 6
Вам нравятся запросы в 1С? 14
Инструменты и обработки Программист Конфигурация (md, cf) v8 v8::Запросы 1cv8.cf Абонемент ($m) Практика программирования Разработка
Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!
1 стартмани
03.07.2019 11407 1 m-rv 79
Перенос данных УПП 1.3 => ERP 2 (ЕРП) / УТ 11 / КА 2.х (обработка переноса документов, остатков и справочников из "1С:Управление производственным предприятием, ред. 1.3" в ERP / УТ 11 / КА 2). Обновлен до УПП 1.3.127.х, КА 2.4.10.х и ERP 2.4.10.х! Промо
Обработка позволяет переносить из УПП 1.3 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления при выходе новых релизов конфигураций 1С.
29700 руб.
Модель объекта 10
Инструменты и обработки Программист Конфигурация (md, cf) v8 Абонемент ($m) Инструментарий разработчика
Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.
1 стартмани
30.06.2019 4650 1 vadim1980 0
Сценарий PowerShell для конвертации файла правил обмена данными КД 2 в Excel 1
Инструменты и обработки Программист Архив с данными Windows Абонемент ($m) Инструментарий разработчика Загрузка и выгрузка в Excel
Если уже есть правила обмена данными, но нет документации, хорошим началом может послужить данный сценарий. С его помощью можно получить документ Excel со списком правил обмена (каждое на лист), а так же взять за основу уже имеющийся документ (титульный лист, содержание и т.д.) и добавить в него данные файла правил обмена.
1 стартмани
24.05.2019 2085 c1nil 5
Новый раздел на Инфостарте - Electronic Software Distribution Промо
Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.
- Низкие цены, без скрытых платежей и наценок
- Оперативная отгрузка
- Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
- Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)
Безопасная работа с транзакциями во встроенном языке 190
Статья Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования
Разбираемся с опасностями использования транзакций во встроенном языке 1С. Познаем ошибку "В данной транзакции уже происходили ошибки". Учимся защищаться от них.
1 стартмани
25.03.2019 17722 8 tormozit 44
Пакетная сортировка метаданных основной конфигурации и расширений 3
Инструменты и обработки Программист Архив с данными Абонемент ($m) Инструментарий разработчика
Быстрая пакетная сортировка метаданных по алфавиту независимо от конфигурации поставщика. Сравнение производительности алгоритмов на Java и 1C:Enterprise.
1 стартмани
13.03.2019 3125 fr13 12
Перенос данных БП 2.0 => УТ 11 / КА 2 / ERP 2 (перенос остатков, документов и справочников из "1С:Бухгалтерия предприятия 8", ред. 2.0 в "1С:Управление торговлей 8", ред.11 / КА 2 / ERP 2). Обновлено до УТ 11.4.10.х, КА 2.4.10.х, ERP 2.4.10.х! Промо
Перенос позволяет загрузить в УТ 11 / КА 2 / ERP 2 документы за выбранный период, справочную информацию и остатки по счетам бух. учета. Переносятся остатки денежных средств, взаиморасчетов, остатки товаров и материалов на складах. Переносятся девятнадцать основных видов документов за выбранный период и вся нормативно-справочная информация. Есть фильтр по организации. Если нужно переносить что-то дополнительно, то обычно бесплатно дорабатываю правила (перед покупкой согласуйте необходимые доработки).
29700 руб.
Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 562
Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования Внешние источники данных WEB Универсальные функции Инструментарий разработчика Универсальные обработки
Коннектор - библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.
1 стартмани
31.01.2019 31341 281 bonv 117
Редактор объектов информационной базы 8.3 44
Инструменты и обработки Программист Пользователь Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Россия Windows Абонемент ($m) Инструментарий разработчика Универсальные обработки
Универсальная внешняя обработка (СДРОбъектУпр) для редактирования реквизитов и табличных частей объектов информационной базы, редактирование движений документов. Доступ ко всем реквизитам объектов, есть возможность выгрузки и загрузки данных (объекты и движения документов) через XML. Платформа 8.3, управляемые формы. Версия 1.1.0.35 от 25.11.2019
2 стартмани
23.01.2019 12082 155 ROL32 28
Готовые переносы данных из различных конфигураций 1C Промо
Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.
Настраиваемое мобильное приложение для сканирования штрихкодов 10
Инструменты и обработки Программист Приложение (apk) Android Абонемент ($m) Практика программирования Сканер штрих-кода Мобильная разработка
Обзор приложения для сканирования штрихкодов с возможностью обработки результата сканирования произвольным кодом для совместного использования с Android приложениями через Intent и взаимодействие с 1С конфигурациями через web-сервис.
1 стартмани
14.01.2019 4358 2 inord777 5
Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия - Simple UI (обновлено 14.11.2019) 178
Инструменты и обработки Программист Архив с данными v8 v8::Mobile БУ УУ Android Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Абонемент ($m) Инструментарий разработчика Сканер штрих-кода Терминал сбора данных Мобильная разработка
Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.
5 стартмани
09.01.2019 25016 229 informa1555 189
Подборка программ для взаимодействия с ЕГАИС Промо
ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.
Разработка внешних компонент на ассемблере goAsm 129
Статья Программист Архив с данными Windows Абонемент ($m) Практика программирования
Создание внешней компоненты по технологии Com "с нуля", используя ассемблер goAsm.
1 стартмани
26.11.2018 8032 6 chessman 40
Навигатор по конфигурации базы 1С 8.3 107
Инструменты и обработки Программист Пользователь Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Россия Windows Абонемент ($m) Инструментарий разработчика Универсальные обработки
Универсальная внешняя обработка (СДРНавигаторУпр) для просмотра метаданных конфигураций баз 1С 8.3. Отображает свойства и реквизиты объектов конфигурации, их количество, основные права доступа и т.д. Отображаемые характеристики объектов: свойства, реквизиты, стандартные рекизиты, реквизиты табличных частей, предопределенные данные, регистраторы для регистров, движения для документов, команды, чужие команды, подписки на события, подсистемы. Отображает структуру хранения объектов базы данных, для регистров доступен сервис "Управление итогами". Небольшой набор сервисных функций для повседневной работы. Для программистов и пользователей. Платформа 8.3, управляемые формы. Версия 1.1.0.47 от 25.11.2019
3 стартмани
28.10.2018 18495 200 ROL32 47
Перенос документов, остатков и справочников КА 1.1 => КА 2 / УТ 11. Обновлено до КА 2.4.10.х и УТ 11.4.10.х! Промо
Более 130 компаний выполнили переход на КА 2 или УТ 11 с помощью нашей разработки! Позволяет перенести не только остатки и справочники (как типовая обработка), но и документы за нужный период времени. Предоставляем техподдержку, оперативно исправляем замечания, выпускаем обновления при выходе новых релизов программ 1С. Вы можете проверить разработку до покупки: сделаем бесплатный тестовый перенос из вашей базы КА 1.1 и предоставим доступ к базе-результату через веб-клиент!
29700 руб.
Работа с публикациями "Инфостарт" 14
Инструменты и обработки Программист Архив с данными v8 УУ Абонемент ($m) Практика программирования О сообществе WEB
Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.
1 стартмани
13.09.2018 10770 10 RocKeR_13 16
1C Форматер кода 5
Инструменты и обработки Программист Приложение (exe) Россия Абонемент ($m) Инструментарий разработчика
Автоматическое форматирование кода 1С
1 стартмани
24.08.2018 4919 2 admin_at_gkgeostroy 9
Подборка решений для взаимодействия со ФГИС «Меркурий» Промо
С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.
Создаем объекты для модуля Bootstarp на Русском Фоксе 3
Инструменты и обработки Программист Архив с данными Россия Windows Абонемент ($m) Практика программирования
Создавайте свой модуль с объектами для модуля Bootstrap, пакуйте их fxp-файлы и создавайте сайты из этих кубиков. Разберем, как это делать. Все гениальное должно быть простым, как теория относительности.
1 стартмани
19.08.2018 4125 andreosh 2
РусскийФокс и BootStrap 3
Инструменты и обработки Программист Архив с данными Россия Абонемент ($m) Практика программирования
РусскийФокс вносит новый технологический подход в сайтостроение. Теперь вы можете ограничиться знанием Русского Фокса и не иметь знаний по HTML, CSS, JavaScript, PHP, чтоб создавать сайты.
1 стартмани
16.08.2018 4453 2 andreosh 18
Перенос документов и справочников ERP 2 / КА 2 / УТ 11 => БП 3.0 Промо
Перенос позволяет настроить собственный обмен данными между указанными программами, альтернативный предлагаемому фирмой 1С. Предоставляем техподдержку по всем вопросам данного обмена. Можем подключиться к вам удаленно для разбора ситуаций. Оперативно обновляем при выходе новых релизов 1С. Бесплатные обновления в течение полугода.
19700 руб.
Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции 65
Инструменты и обработки Программист Бизнес-аналитик Приложение (apk) v8 Windows Абонемент ($m) Инструментарий разработчика Практика программирования
Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.
5 стартмани
09.08.2018 17405 23 informa1555 26
РусскийФокс. Изменение DBF-файла и назначение командных клавиш 1
Инструменты и обработки Программист Архив с данными Россия Windows Абонемент ($m) Практика программирования Файловые протоколы обмена, FTP
- Шарапов, ты Русского Фокса знаешь ? - Конечно, Глеб. Я же программирую на Русском Фоксе. РусскийФокс (1C-подобный язык программирования) создает DBF-файлы и выгружает данные из DBF в XML.
1 стартмани
01.08.2018 4297 andreosh 2
Онлайн-курс "Технология выполнения проектов ERP-класса – процессный подход". Третий поток. Курс проходит с 21 января по 18 марта 2020 года. Промо
Курс разработан Внедренческим центром «Раздолье». Курс предназначен для подготовки аналитиков, архитекторов и руководителей проектов автоматизации процессов управления с использованием комплексных ИТ-систем (1С:ERP, 1С:УХ, 1С:КА, 1С:УТ). В основе курса лежит методика применения процессного подхода.
9000 рублей
РусскийФокс. Создание DBF-файла, выгрузка в XML. 3
Инструменты и обработки Программист Архив с данными Россия Windows Абонемент ($m) Практика программирования
Новый объектно-ориентированный русскоязычный 1С-подобный язык программирования РусскийФокс. . РусскийФокс создает DBF-файлы и выгружает данные из DBF в XML. Голосуйте за доклад о РусскийФокс на Инфостарт.
1 стартмани
28.07.2018 3983 2 andreosh 0
РусскийФокс и ClickerMann заносят данные в 1С 5
Инструменты и обработки Программист Архив с данными Россия Windows Абонемент ($m) Сервисные утилиты Практика программирования
Новый объектно-ориентированный русскоязычный 1С-подобный язык программирования РусскийФокс. . РусскийФокс создает сценарии для Clickermann. Сценарий заполняет справочник в 1С.
1 стартмани
21.07.2018 7140 1 andreosh 20
Программы для исполнения 54-ФЗ Промо
С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.
Работа с данными выбора 41
Инструменты и обработки Программист Архив с данными v8 Россия Абонемент ($m) Практика программирования Работа с интерфейсом
В управляемом интерфейсе заложена мощная возможность описывать связи реквизитов формы через параметры. Установка параметров связей позволяет ограничить выбор данных так, чтобы целостность данных была обеспечена на этапе ввода. Однако без дополнительного программирования задать можно только самые простые связи. Такие условия связи, как зависимость от реквизита через точку или зависимость через дополнительное отношение, заданное в регистре сведений - уже задать без программирования не получится.
1 стартмани
17.07.2018 24430 14 kalyaka 15
РусскийФокс и OpenOffice, а также исследование объектов 5
Инструменты и обработки Программист Архив с данными Россия Windows Абонемент ($m) Практика программирования
Новый объектно-ориентированный русскоязычный 1С-подобный язык программирования РусскийФокс. . Взаимодействие с OpenOffice. GitHub https://github.com/UfaScript/RusFox
1 стартмани
12.07.2018 4377 1 andreosh 2

Просмотры 15584
Загрузки 21
Комментарии 165
Создание 22.07.19 18:19
Обновление 22.07.19 18:19
№ Публикации 1095329
Рубрики Практика программирования Инструментарий разработчика
Кому Программист
Тип файла Приложение (exe)
Платформа Не имеет значения
Конфигурация Не имеет значения
Операционная система Windows
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Нет
Онлайн-касса для любой конфигурации 1С 7.7!
|
