На каком языке написана 1с

Обновлено: 04.07.2024

Корпорация Microsoft разрабатывает новый язык программирования, который ориентирован на создание приложений, не подверженных наиболее распространенным проблемам безопасности, пишет Zdnet.

Новый язык базируется на набирающем популярность Rust, развитием которого занимается компания Mozilla, разработчик известного браузера Firefox. Проект получил название Verona и, по данным издания, ключевое его отличие от Rust заключается в применении модели владения на основе групп объектов, а не единичных объектов. Ожидается, что исходные тексты текущих наработок в его рамках будут открыты под свободной лицензией Apache 2.0. Репозиторий проекта уже появился на принадлежащей Microsoft c 2018 г. платформе Github, но пока пуст.

Как отмечает Zdnet, Microsoft также может переписать некоторые низкоуровневые компоненты Windows 10 с использованием модифицированного Rust, чтобы исключить потенциальные проблемы, возникающие при применении языков C и C++.

Как смена языка поможет повысить безопасность

Языки C и C++ в течение десятилетий повсеместно используются в качестве инструмента разработки системного ПО и возлагают на программиста задачу управления оперативной памятью, что неизбежно приводит к возникновению ошибок, таких как обращение к участку памяти после его освобождения или, например, выход за границы буфера. По словам Мэтта Миллера (Matt Miller), специалиста Microsoft по безопасности, около 70% всех уязвимостей, обнаруженных в программных продуктах корпорации за последние 12 лет, связанны с ошибками управления памятью.

microsoftmemorysafetytrends.jpg

Около 70% всех уязвимостей, обнаруженных в программных продуктах Microsoft за последние 12 лет, связанны с ошибками управления памятью

В языке Rust (как, видимо, и в Verona), в отличие от C и C++, реализован механизм автоматического управления памятью на основе принципа «владения», который избавляет программиста от необходимости вручную манипулировать памятью, тем самым снижая вероятность возникновения ошибок. Стоит также отметить, что в угоду производительности в Rust не используется так называемый сборщик мусора (Garbage Collector, GC), в задачи которого входит автоматическое удаление из памяти объектов, которые более не востребованы программой.

Эксперименты Microsoft с Rust

Zdnet пишет, что Microsoft начала экспериментировать с Rust летом 2019 г. Сообщалось, что компания собирается переписать некоторые из своих продуктов с использованием этого языка программирования.

В начале ноября 2019 г. Адам Берч (Adam Burch), программист из команды разработчиков Hyper-V (системы аппаратной виртуализации для x64-систем на основе гипервизора), написал в корпоративном блоге о том, что ему поручили переписать на Rust некий низкоуровневый компонент Windows, назвать который он пока не может. По его словам, несмотря на незавершенность проекта, опыт применения Rust оказался в целом позитивным. Он также отметил, что кодовую базу новых компонентов и уже существующих, но с «чистыми интерфейсами», перевести на Rust не составит большого труда. Кроме того, Берч посетовал на отсутствие некоторых возможностей в языке по сравнению с привычным ему C, но выразил уверенность в том, что Microsoft сможет посодействовать их добавлению.

Несколько слов о Rust

Rust появился в 2006 г. как личный проекта Грейдона Хоара (Graydon Hoare), сотрудника Mozilla. В 2009 г. Mozilla начала спонсировать разработку Rust для собственных нужд, а также расширила команду для дальнейшего развития языка.


Интерес Mozilla к Rust был вызван наличием огромного числа критических уязвимостей в разрабатываемом компанией браузером Firefox, в реализации которого присутствовало свыше 4 млн строк на языке C++. Rust был создан с учетом требований безопасности и параллелизма, что сделало его подходящим выбором для переписывания многих компонентов Firefox в рамках проекта Quantum по полной переработке архитектуры браузера. Кроме того, Mozilla использовала Rust для разработки Servo, движка рендеринга HTML, который должен был заменить действующий движок рендеринга Firefox.

Помимо Mozilla и Microsoft в своих проектах Rust применяют Google, Facebook, Amazon, Dropbox, Fastly, Baidu.

В августе 2019 г. в рамках саммита по технологиям с открытым исходным кодом (Open Source Technology Summit) Джош Триплетт (Josh Triplett), ведущий инженер Intel, рассказал о том, что его компания заинтересована в том, чтобы в ближайшем будущем Rust достиг «паритета» с доминирующим в области системной и низкоуровневой разработки языком C.

В том же месяце Грег Кроа-Хартман (Greg Kroah-Hartman), один из ключевых разработчиков ядра Linux, заявил, что не станет препятствовать включению в ядро фреймворка для написания драйверов на языке Rust.

Привет, Хабр!
В этой статье мы начнем рассказ о том, как устроена внутри платформа «1С:Предприятие 8» и какие технологии используются при ее разработке.

image

Нативные приложения

  • STL (в частности, строки, контейнеры и алгоритмы)
  • множественное наследование, в т.ч. множественное наследование реализации
  • шаблоны
  • исключения
  • умные указатели (собственная реализация)

Компоненты

  • Разделение способствует лучшему проектированию, в частности лучшей изоляции кода
  • Из набора компонентов можно гибко собирать разные варианты поставки:
    • Например, инсталляция тонкого клиента будет содержать wbase, но не будет backend
    • а на сервере wbase, наоборот, не будет
    • оба варианта будут, конечно, содержать nuke и bsl
    • Предоставляет фабричные методы, позволяющие создать класс из другой компоненты зная только его название (без раскрытия реализации)
    • Предоставляет инфраструктуру умных указателей с подсчетом ссылок. За временем жизни SCOM-класса не нужно следить вручную
    • Позволяет узнать реализует ли объект конкретный интерфейс и автоматически привести указатель на объект к указателю на интерфейс
    • Создать объект-сервис, всегда доступный через метод get_service и т.д.

    Этот макрос опишет специальный статический класс-регистратор, конструктор которого будет вызван при загрузке компоненты в память.
    После это можно создать его экземпляр в другой компоненте:

    Для поддержки сервисов SCOM предлагает дополнительную, достаточно сложную инфраструктуру. Центральным в ней является понятие SCOM-процесса, который служит контейнером для запущенных сервисов (т.е. выполняет роль Service Locator), а также содержит привязку к локализуемым ресурсами. SCOM процесс привязывается к потоку ОС. Благодаря этому внутри приложения можно вот так получать сервисы:

    Более, того переключая логические (SCOM) процессы привязанные к потоку, можно получить практически независимые с точки зрения информационного пространства приложения, выполняющиеся в рамках одного потока. Так устроен наш тонкий клиент, работающий с файловой базой — внутри одного процесса ОС находятся два SCOM-процесса, один связан с клиентом, а второй — с сервером. Такой подход позволяет унифицировать написания кода, который будет работать как на локальной файловой базе, так и в «настоящем» клиент-серверном варианте. Цена за такое единообразие — накладные расходы, но практика показывает, что они того стоят.

    На основе компонентной модели SCOM реализована и бизнес-логика и интерфейсная часть 1С: Предприятия.

    Пользовательский интерфейс

    Кстати, об интерфейсах. Мы не используем стандартные контролы Windows, наши элементы управления реализованы напрямую на Windows API. Для Linux-версии сделана прослойка, работающая через библиотеку wxWidgets.
    Библиотека элементов управления не зависит от других частей «1С:Предприятия» и используется нами еще в нескольких небольших внутренних утилитах.

    За годы развития 1С:Предприятие внешний вид контролов менялся, но серьезное изменение принципов произошло только один раз, в 2009 году, с выходом версии 8.2 и появлением «управляемых форм». Помимо изменения внешнего вида, фундаментально изменился принцип компоновки формы — произошел отказ от попиксельного позиционирования элементов в пользу flow-компоновки элементов. Кроме того, в новой модели элементы управления работают не напрямую с доменными объектами, а со специальными DTO (Data Transfer Objects).
    Эти изменения позволили создать веб-клиент «1С:Предприятия», повторяющий С++ логику контролов на JavaScript. Мы стараемся поддерживать функциональную эквивалентность между тонким и веб клиентами. В том случае, когда это невозможно, например, из-за ограничений доступных из JavaScript API (например, возможности работы с файлами очень ограничены), мы часто реализуем нужную функциональность при помощи расширений браузеров, написанных на C++. На данный момент мы поддерживаем Internet Explorer и Microsoft Edge (Windows), Google Chrome(Windows), Firefox (Windows и Linux) и Safari (MacOS).

    Кроме того, технология управляемых форм используется для создания интерфейса мобильных приложений на платформе 1С. На мобильных устройствах отрисовка контролов реализована с использованием «родных» для операционной системы технологий, но уже для логики компоновки формы и реакции интерфейса используется тот же код, что и в «большой» платформе «1С:Предприятие».

    image


    Интерфейс 1С на ОС Linux

    image


    Интерфейс 1С на мобильном устройстве

    image


    Интерфейс 1С на ОС Windows

    image


    Интерфейс 1С — веб-клиент

    Open source

    Заключение

    В статье мы коснулись нескольких основных аспектов разработки платформы «1С: Предприятие». В ограниченном объеме статьи мы затронули лишь некоторые интересные, на наш взгляд, аспекты.
    Общее описание различных механизмов платформы можно посмотреть тут.
    Какие темы были бы интересны Вам в следующих статьях?

    Как реализована мобильная платформа 1С?
    Описание внутреннего устройства веб-клиента?
    Или, может быть, Вам интересен процесс выбора фич для новых релизов, разработки и тестирования?

    Как стало известно CNews, фирма «1С» выбрала отечественную платформу Liberica JDK компании Bellsoft в качестве стандартного средства запуска компонентов программ системы «1С:Предприятие», написанных на языке программирования Java. Кроме того, Bellsoft будет оказывать техническую поддержку фирме «1С».

    Среду исполнения Java, входящую в состав пакета Liberica JDK, планируется включать в комплекты поставок ПО «1С», в составе которого есть Java-компоненты. В частности, инструмент разработчика 1C:Enterprise Development Tools (EDT) для своей работы нуждается в среде исполнения Java, пояснили CNews в Bellsoft.

    1C:EDT – это кроссплатформенная расширяемая среда разработки прикладных решений для платформы «1С:Предприятие». Она создана на основе популярной интегрированной среды разработки Eclipse с открытым исходным кодом на Java. 1C:EDT включает инструменты автоматизации разработки, а также позволяет расширять функциональность инструментов разработки с помощью дополнений (плагинов).

    1s600.jpg

    «1С» выбрала Liberica JDK в качестве стандартной среды исполнения Java-компонентов своих программ

    Представитель «1С» в разговоре с CNews подтвердила факт перехода на Liberica JDK, однако воздержалась от рассказа о подробностях.

    Почему не Oracle JDK

    Говоря о возможных причинах выбора фирмы «1С» в пользу Liberica JDK при наличии альтернатив в виде Oracle JDK и OpenJDK, генеральный директор компании Bellsoft Александр Белокрылов отметил, что «благодаря сотрудничеству с Bellsoft "1С" получает возможность предоставлять миллионам своих пользователям безопасную и надежную среду исполнения Java, а также – возможность оперативно исправлять обнаруженные дефекты прямо в проекте OpenJDK». По его мнению, экспертиза и опыт инженеров Bellsoft позволяют поддерживать в новых версиях Liberica JDK компоненты, которые были исключены из поддержки Oracle JDK, например, JavaFX.

    «Подобные преимущества, как показал опыт, являются существенными для ряда клиентов Bellsoft. Также важным аспектом было изменение лицензионной политики и отсутствие возможности использовать Oracle JDK без коммерческой подписки на поддержку», – пояснил Белокрылов.

    Напомним, что в апреле 2019 г. корпорация Oracle изменила условия использования Oracle JDK. По условиям новой лицензии, бесплатно применять Oracle JDK/JRE в коммерческих целях стало запрещено. До этого момента фирма «1С» рекомендовала именно эту сборку для запуска среды разработки 1C:Enterprise Development Tools.

    В примечании к релизу EDT версии 1.11.0, который состоялся летом 2019 г., предлагалось при отсутствии соответствующей подписки вместо Oracle JDK использовать один из дистрибутивов на базе OpenJDK, среди которых фигурировал и Liberica JDK.

    Что такое Liberica JDK

    Liberica JDK – это среда разработки и запуска Java-приложений. Продукт создан российской компанией Bellsoft на основе проекта с открытым исходным кодом OpenJDK. Liberica JDK позиционируется разработчиком в качестве полноценной замены Oracle JDK. Liberica JDK включена в реестр российского ПО, допущена ФСБ для использования с сертифицированными криптографическими средствами и протестирована на совместимость с рядом отечественных операционных систем.

    «ВТБ Лизинг» внедряет управление данными как ценным бизнес-активом


    Liberica JDK поддерживает широкий выбор платформ включая как современные 64-битные Linux x86, ARM, так и устаревшие (legacy) 32-битные, Solaris SPARC, x86, PowerPC. Система также гарантировано работает на российских ОС: Astra Linux, «Альт», «Ред ОС», «Роса». Таким образом, Liberica JDK подходит для работы в гетерогенном окружении.

    Первоначальный разработчик Java – компания Sun Microsystems, в 2009 г. поглощенная Oracle, в 2007 г. открыла исходный код Java под свободной лицензией GNU GPL v2 и создала проект OpenJDK, позволив другим компаниям участвовать в развитии платформы.

    Начиная с версии 11, которая вышла в сентябре 2018 г., платформа Oracle JDK является платной. Последнее публичное обновление Java 11 вышло в феврале 2019 г. В данный момент и до декабря 2026 г. доступ к патчам безопасности и критическим исправлениям для Java 11 возможен только для коммерческих клиентов Oracle. Java 8 – еще одна актуальная версия платформы, вышла в марте 2014 г., а публичные обновления ее пользователи перестали получать в январе 2019 г. Bellsoft предлагает коммерческую поддержку версий Java 8 и 11 на собственной платформе Liberica JDK до 2031 и 2027 г. соответственно.

    Liberica JDK, по заявлению представителей Bellsoft, включает все исправления критических уязвимостей, дефектов и оптимизации производительности. Bellsoft, наряду с Red Hat, SAP, Google и IBM, входит в пятерку компаний, вносящих наибольший вклад в разработку OpenJDK (по числу отправленных исправлений). Это дает возможность заказчикам российской компании получать исправления безопасности синхронно с Oracle Java.

    Проект в НСПК

    В конце сентября 2020 г. CNews сообщил о том, что оператор платежной системы «Мир», «Национальная система платежных карт» (НСПК), перешла на Liberica JDK. До перехода на отечественный дистрибутив Java в организации использовалась оригинальная платформа Oracle JDK.

    Разработка компании Bellsoft применяется НСПК в качестве платформы для систем процессинга, клиринга и программы лояльности. Также, по условиям соглашения, Bellsoft оказывает оператору техническую поддержку.

    Один из вопросов в названии.

    И следующий: сколько по времени займет его изучение, если я в программировании полный 0?

    Куратор других игр и разного

    img

    Один из вопросов в названии.

    И следующий: сколько по времени займет его изучение, если я в программировании полный 0?

    Ну т.к на первый вопрос тебе уже ответил крем я попробую ответить тебе на 2 вопрос (не совсем)
    А зачем тебе именно 1С? Весьма узкопрофильная штука онли в рашке бтв

    Куратор технического раздела

    И следующий: сколько по времени займет его изучение, если я в программировании полный 0?

    Все зависит от того, знаком ли с предметной областью (бухгалтерией), ибо бОльшую часть занимает именно оно, а программирование как таковое очень примитивное.

    А зачем тебе именно 1С? Весьма узкопрофильная штука онли в рашке бтв

    Я бухгалтер, работаю в бухгалтерии(бюджетный учет) . Зачастую она не правильно считает и приходиться "подбивать".

    На самом деле я вообще подумываю о смене деятельности, если честно, и если бы у меня получилось скажем освоить тот язык на котором написана 1с и успешно пользоваться этим и применять я бы мб задумался о смене профессии, ну а нет, так нет.

    Поэтому я и задал вопрос на этом форуме.

    img

    И да если ты говоришь что-то она неправильно считает, 120% что это ошибка пользователя.

    Освоить язык 1С - 2-3 года работы во франче за копейки.

    Зачастую она не правильно считает и приходиться "подбивать".

    открою тебе секрет

    это ты неправильно считаешь а не она

    А зачем знать на каком языке написана программа? Если для твоих нужд надо знать какой язык использует программа может ты так хотел сказать.

    Один из вопросов в названии.

    И следующий: сколько по времени займет его изучение, если я в программировании полный 0?

    Ты определись, тебе нужен язык на котором написана 1Ска или же сам язык 1С для бухгалтерских делишек в оной программке.

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

    Зашел разговор про 1с и я услышал следующее мнение - что 1с написана на ЯП Русского разлива, т.е. даже буквы в этом ЯП Русские, так же этот гражданин приложил скрин (в конце поста). Проясните ситуацию, на чем написана 1с, и если она все такие написана на C++, то каким боком относиться к ней ЯП на Русский манер?

    Вообще любая инфа на этот счет будет интересна.

    введите сюда описание изображения


    1,476 1 1 золотой знак 11 11 серебряных знаков 28 28 бронзовых знаков Хз, кто это перевел. Я как бы не знаток в вопросе, но когда я услышал про кириллический ЯП - мне захотелось присесть. А что такого страшного в русском языке в программировании? По большому счету, русифицировать тот же C++ - нет проблем, работа простейшая, буквально для начинающего программиста. но зачем? Мое искреннее мнение - наше счастье (и преимущество), что языки программирования англоязычные, так что мы воспринимаем их по сути как математические формулы, а не как инструкции на русском. Одного приведенного скриншота достаточно, чтобы это понять :) @Harry Вы сами ответили на свой вопрос. Страшного - ничего, но и полезного - еще меньше. Остается мечтать о том, что бы и валюта и границы между странами стерлись, а там может и язык в более общий сольется, столько преград сразу рухнет. ух! В недалеком прошлом было несколько языков программирования на русском: Алмир, Аналитик, Рапира. Язык Лого традиционно переводится на язык той страны, в которой используется. | Как уже тут сказали, русифицировать C++ элементарно. Зацените, например, боярский диалект.

    На скриншоте язык не на котором написана платформа 1С, а язык на котором пишутся её конфигурации. Сама 1С написана на C++.

    64.8k 6 6 золотых знаков 47 47 серебряных знаков 102 102 бронзовых знака

    На самом деле, 1С написана на языке С++ в среде разработки MS Visual C++.

    Это сведения разработчиков 1С:

    Платформа 1С: Предприятия 8 написана на MS Visual C++.

    При создании платформы использована собственная компонентная архитектура. Сервер 1С: Предприятия создан с использованием технологии COM+. Механизмы платформы содержат большое количество собственных технологических решений.


    2,594 1 1 золотой знак 12 12 серебряных знаков 40 40 бронзовых знаков

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


    Платформа 1C:Предприятие — это система с открытым прикладным исходным кодом, написанным на проприетарном языке, официально его называют «Встроенный язык программирования 1С:Предприятие», неофициально и коротко – «язык 1С». Сама платформа 1С:Предприятие 8 — это большое (более 10 миллионов строк кода) приложение на C++ (клиент, сервер и т.д.), JavaScript (веб-клиент), и, с недавних пор еще и Java.


    Читайте также: