Язык 1с на какой язык похож
Зачем это надо ? - Самые большие зарплаты программистов на Java и JavaScript.
На 1С зарплата сеньора 150 тысяч руб. в месяц (максимум 200), я на яве уже 250 тысяч руб. (максимум 300). Разработка на ява похожа по смыслу на 1С, поэтому 1С-нику лучше туда.
JavaScript предназначен в основном для рисования форм в веб-браузере, что для 1С-ника вообще не является работой, т.к. в 1С формы рисуются автоматически сами собой. Есть ещё много других языков программирования редких и специализированных, имеющие мало вакансий, поэтому неинтересные.
Что можно сделать на яве:
- backend для корпоративных сайтов, например аналогично как в 1С после нажатие на кнопку "Записать" куда-то что-то записывается, или отправляется емайл или т.п., это и есть бакенд. Для обычных небольших сайтов больше подходит язык php, на котором легче делать то же самое, но он не подходит для крупных сайтов т.к. не имеющий строгой типизации язык быстро превращается в «говнокод», а также там нет масштабируемости, мнгопоточности и др.
- frontend совместно с JavaScript – рисование вебформ, с кнопками и др., изменение их размеров, скрытие и др. Редко используется т.к. легче на JavaScript без Java
- приложения для десктопных компьютеров – редко используется т.к. самый современный фреймворк для этого JavaFX отстаёт по возможностям от 1С и от очень старого Delphi6, т.е. лет на 20. Чтобы создать 1 кнопочку на форме с простым действием уходит 1 час вместо одной минуты на 1С, т.к. кроме долгих настроек надо ещё конфигурировать .xml файл и др.
- приложения для смартфона – редко используется т.к. на андроиде теперь официальный язык Kotlin, а на iOS – Swift
- приложения для специализированных устройств – редко используется т.к. нет вакансий
Работа 1С-ника итак состоит в создание бакенда на 80%, 10% - рисование форм frontend, 10% - общение с пользователями, т.е. работа по смыслу совсем не изменится. Вместо пользователей будут аналитики, вместо создания форм будет общение с фронтендерами, добавится только создание автоматических юнит-тестов, которые 1С-ники не делают вообще никогда, а может и не добавится, если это сделают отдельные тестировщики, в общем ничего не изменится в режиме работы.
В 1С все программируют на русском языке, можно и на английском, но никто этого делать не будет, поэтому казалось бы нет ничего общего с явой, совсем не похоже, и знания из 1С не пригодятся уже, но достаточно просто сделать «перевод» терминов из 1С в ява, тогда всё будет намного проще – что я и попытаюсь сделать.
- IDE - как конфигуратор в 1С, IntelliJ IDEA или NetBeans
- Java core - синтаксис языка, он простой, совместно с фреймворками становится всё сложно, а сам язык легкий для изучения.
- Работа с коллекциями - аналогичные коллекции как в 1С: "Массив", "Список значений", "Структура", "Соответствие" и др., точно такие же коллекции есть в java, достаточно написать таблицу соответствий как они называются тут и там.
- Maven - для собирания всех файлов разных компонент, фреймворков в одну папку, нужной структуры, а также их обновления, выполнения скриптов. В 1С версии 8 обычно не нужно, там редко бывают внешние файлы, а в 1С 7.7 много внешних файлов, но всё равно нет ничего аналогичного.
- Spring boot, Spring BOM - в основном контролирует чтоб версии разных компонент (старые и новые) не конфликтовали друг с другом, т.е. где-то в интернете хранится таблица совместимости разных версий компонент друг с другом.
- Работа с базами данных - аналогично как в 1С "Внешние источники данных". Можно просто запросами вытягивать оттуда данные, а лучше сделать маппинг ORM т.е. превращение реляционных таблиц в объекты java - 1С это делает полностью автоматически, незаметно для программиста, в яве тоже полуавтоматически создаются классы типа "@Entity"
- Запросы к базе данных - знание обычных TSQL запросов пригодится, но будет ещё язык HQL - специализированный язык запросов для превращения реляционных таблиц в объекты java, как и в 1С есть свой особый язык запросов.
- Spring core - в основном для Dependency Injection - как бы для хранения глобальных переменных, которых нет в 1С версии 8, но есть в версии 7.7
- Spring MVC - как веб сервисы в 1С. Например аннотация "@GetMapping("/page1")" означает что функция которая ниже выполнится когда откроется веб страница "page1"
- XML и JSON - они итак есть в 1С, в яве ещё легче сериализовать объект т.е. превратить в строку.
- RestFull, микросервисы - то же что в 1С галочка "Публиковать стандартный интерфейс Odata", который для всех объектов конфигурации автоматически создает интерфейс RestFull, в яве делают то же самое только для нужных объектов.
- Тестирование - вручную как в 1С, и написание автоматических юнит-тестов.
- Git - как хранилище конфигурации в 1С, для совместной работы нескольких программистов.
- Deploy - обновление конфигурации, в яве это обычно просто скопировать куда-то файл, специально подготовленный.
По каждому пункту напишу отдельную статью, кратко, для общего понимания и сравнения как одно и то же делать на разных языках, и где легче.
P.S. Работаю программистом 1С, изучаю java, поэтому описание про яву примерное, ненаучное.
PPS: Работаю уже golang developer, т.к. ява отстойная :-) , устаревшая, не нравится
(20) По операторным скобкам, по ; после операторной скобки (КонецЕсли;) действительно больше похож на Паскаль.
На С++ похож слабо, т.к. там есть всякие указатели. Больше тогда уж похож на шарп, опять же тоже автоматическая сборка мусора.
Я, например, переезжаю с С++ на шарп
(22) В 1С это сом там подсчет ссылок. GC это немного другая песня с дефрагментацией памяти, поколениями итд.
от с++ у него только буква в названии
Если бы 1С был C++ то код выглядел бы как то так
ДокументОбъект.РасходнаяНакладная *Документ;
Документ = Новый Документ.РасходнаяНакладная();
ПолучитьНовыйНомер(&Документ->Номер);
Документ->Номенклатура->Очистить();
(ДокументОбъект)Документ->Записать(РежимЗаписиДокумента.Запись);
ДокументОбъект.РасходнаяНакладная Документ;
Документ = Новый Документ.РасходнаяНакладная();
ПолучитьНовыйНомер(Документ.Номер);
Документ.Номенклатура.Очистить();
Документ.Записать(РежимЗаписиДокумента.Запись);
(43) на с++ и так можно
ДокументОбъектРасходнаяНакладная Документ;
ПолучитьНовыйНомер(&Документ.Номер);
Документ.Номенклатура.Очистить();
Документ.Записать(РежимЗаписиДокумента.Запись);
(43) ну кто так пишет?
ДокументОбъект.РасходнаяНакладная *Документ = Новый Документ.РасходнаяНакладная();
Документ->ПолучитьНовыйНомер();
Документ->Номенклатура->Очистить();
Документ->Записать(РежимЗаписиДокумента.Запись);
Удалить Документ;
ДокументОбъект.РасходнаяНакладная Документ = Новый Документ.РасходнаяНакладная();
Документ.ПолучитьНовыйНомер();
Документ.Номенклатура.Очистить();
Документ.Записать(РежимЗаписиДокумента.Запись);
(49) а так писать неверно:
ДокументОбъект.РасходнаяНакладная *Документ; //указатель
ПолучитьНовыйНомер(&Документ->Номер); //что это?
и Номер публичное поле есть не гуд
(52) всё это хорошо в теории, а когда начинаешь писать, да еще используя библиотеки с разными "умными указателями"
(53) Дикость средневековая. 21 век на дворе а они все об оптимизации и чистке памяти. Зачем этим заниматься если гиг памяти стоит меньше чем час работы программиста?
(43)
Ты написал так, как будто 1С-ник решил написать что то на шарпе. А реально на шарпе код бы выглядел совсееееееем по другому.
(55) угу, а то я и смотрю как сервер приложений 1С все жрет и жрет память, а старую не освобождает, наверное тоже считают чистку памяти за дикость
(55)
Ты это очень мягко говоря заблуждение. Если не выходить за рамки "документа с отчетиком" - тогда да. А когда делаешь сервис, который за неделю работы выживает всю доступную память и падает в итоге - то никакие гиги-миги тебя не спасут.
Не говоря уж о мобильный устройствах, где приложению выделяется 250 метров рама - а дальше - щастлива -- о каких ногах ты говоришь.
(50) ПолучитьНовыйНомер(&Документ->Номер);
Это значит, что где то объявлена функция
void ПолучитьНовыйНомер(int *number)
<
int k = ПолучитьПоследнийНомерВДанномРазрезе();
*number = k+1:
>
Ну а сам Номер это
public class ДокументОбъект.РасходнаяНакладная: ДокументОбъект
<
public: //.
int Номер;
//.
>
Теперь понятнее?
А причем тут гут, не гут. Мне надо было разницу языков продемонстрировать, а не красоту наводить
(61)
1. не указатель только:
>>void ПолучитьНовыйНомер(int *number)
лучше:
void ПолучитьНовыйНомер(int &number)
2. за такое в С++ бьют
public:
int Номер; //открытое поле :-(
(63) > за такое в С++ бьют
Только адепты C++ ООП, которые больше ничего не знают и которым сказали что так низзя.
(63) void ПолучитьНовыйНомер(int &number)
что это за . Все что я вижу, это только
cannot convert parameter 1 from 'int *' to 'int &'
Так же добивает когда паскалисты городят кучи пропертей для атрибутов без сайд-эффектов по операциям и гарантированно не модернизируемых в будущем.
(69) С чего это я вдруг не должен там использовать указатель, я хочу передать в функцию указатель на номер, чтобы эта функция его проставила такой какой надо.
(74) Покажи хоть одну функцию на msdn из стандартных библиотек , в которой параметр объявлен как int &
(76) Справедливости ради, Страуструп советует использовать все же указатели для передачи левозначений, которые должны быть изменены, так как при использовании функции не разработчиком явно понятно, что может быть измено, а что нет. Но я, лично все равно предпочитаю передавать по ссылке бо так проще работать, и не надо проверять указатель на NULLевость.
(78) Навскидку - страница 146 (Язык программирования С++):
"Для улучшения
читаемости программ лучше избегать функций, изменяющих свои аргументы.
Предпочтительнее использовать явным образом возврат функции или объявить
аргумент указателем:"
(46) На аппаратном уровне - практически так и есть. Но системы команд процессоров обычно дают более высокий уровень абстракции. Т.е. система команд может быть достаточно сложной, где каждая команда - суть микропрограмма.
Есть процессоры с изменяемой системой команд.
На чем написана платформа 1С:Предприятия 8?
Платформа 1С:Предприятия 8 написана на MS Visual C++.
При создании платформы использована собственная компонентная архитектура.
Сервер 1С:Предприятия создан с использованием технологии COM+.
Механизмы платформы содержат большое количество собственных технологических решений.
(53) Это 8.0 сервер был в DCOM реализован. Потом посмотрели на результат, плюнули, и переписали нафиг.
(50)тсссс.
не надо про микропрограммы. а то еще ромикса накличешь.
(44) кроме "сообщить" есть еще много чего.
лень искать тебе доказательсятва :-)
(0) Ее пилили на ассемблере под ДОС еще в СССР, а используют под Виндой уже в СНГ, от этого все ошибки. Истинно говорю вам.
Написано на Си/С++, так как требуется возможность компиляции под Win32,Win64 и Linux. Если хочется узнать точно, то смотрите двоичные файлы на предмет структуры компилятора.
1C - наследие великой империи.. ее написали наши предки пока был жив сам И.В.Сталин.. с тех пор как и все сделанное великое тех времен 1С с каждым годом все хиреет и приходит в упадок.
вот уже разложилась до 8ой версии и скоро ей капец настанет.. а вот раньшее.. во времена 7.7 1С была о-го-го какая.. весь мир ее боялся и нам завидовал.. ибо мы были империей и делали великие продукты..
(80) Я писал. Ну не совсем в кодах. На асме, но это то же что и коды технически. Набивал в mons-4 отлаживал в gens-4
(78) а романтика - да, была.
"-я тут программу написал. делает это, это и это!
-- ну и моя тоже это жен делает.
- а у меня еще это.
-- у меня тоже!
- а моя всего пять килобайт!
-- моя тоже пять.
-- ну, этта. Килобайт килобайту рознь!"©
(81) я и в кодах писал (поэтому и называю извращенцем в т.ч. себя). знал PDP-шную СК, благо она легкая. Ну и 80-й почти наизусть, ибо тоже простая. когда писал ассемблер-отлачик для однокристаллок интеловских - и их СК знал наизусть.
а про голда я вообще рассказывал - он в армии спер из библиотеки журнал радио с дампом интерпретатора бейсика (для Микро-80), восстановил по памяти таблицу СК 80-го проца, и вручнцю дизассемблировал этот интерпретатор, отсылая в письмах домой.
"Вот были люди в наше время! не то, что нынешнее племя!!"©
Вопросы:
1) Нафига голосовалка?!
2) Что такое программа 1С?!
3) Почему для пунтов в голосовалке не указана версия языка?
4) Почему в голосовалке игнорировал ты Delphi?
А Python? Ruby?
За D будущее, которое настанет уже завтра.
Я вообще не понимаю, как этот "переносимый ассемблер" стал считаться языком прикладного программирования.. И как следствие, 90% всех уязвимостей, дыр и глюков современного софта - из-за этого.
Привет, Хабр!
В этой статье мы начнем рассказ о том, как устроена внутри платформа «1С:Предприятие 8» и какие технологии используются при ее разработке.
Нативные приложения
- 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С:Предприятие».
Интерфейс 1С на ОС Linux
Интерфейс 1С на мобильном устройстве
Интерфейс 1С на ОС Windows
Интерфейс 1С — веб-клиентOpen source
Заключение
В статье мы коснулись нескольких основных аспектов разработки платформы «1С: Предприятие». В ограниченном объеме статьи мы затронули лишь некоторые интересные, на наш взгляд, аспекты.
Общее описание различных механизмов платформы можно посмотреть тут.
Какие темы были бы интересны Вам в следующих статьях?Как реализована мобильная платформа 1С?
Описание внутреннего устройства веб-клиента?
Или, может быть, Вам интересен процесс выбора фич для новых релизов, разработки и тестирования?Язык программирования 1С — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под её управлением.
Платформа 1С Предприятие 8 имеет полноценный функционал для разработки собственных решений для разработчика. Главный инструмент разработки — это встроенный язык программирования 1С 8.3.
Язык программирования 1С не имеет названия, на официальных источниках он обозначен как «встроенный язык программирования».
На что похож язык программирования 1С
Встроенный язык программирования 1С — язык программирования, который используется для разработки приложения на базе платформы 1С Предприятие. Данный язык является предварительно компилируемым предметно-ориентированным языком высокого уровня. Язык более всего напоминает по синтаксису Visual Basic в сочетании с языком запросов T-SQL.
Создание новых классов программно в языке 1С 8.3 запрещено. Так как платформа 1С Предприятие специализирована для задач учета, состав классов заранее предопределен:
На основании типовых классов можно в конфигураторе создать любое количество подклассов, имеющих свои наборы. С помощью модулей менеджеров можно незначительно расширить функционал подкласса.
Сложный ли язык программирования 1С?
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>Вопрос достаточно спорный и относительный. Если рассматривать его относительно других языков, возможно, он покажется немного проще. Однако помимо самого программирования, Вам придется изучать предметную область — бухгалтерию, производство, налоговый учет и т.д., что делает в совокупности язык программирования 1С не таким простым, как может показаться с первого взгляда.
Если Вы имели до знакомства с 1C солидный опыт на других предметно-ориентированных языках программирования, Вам не составит труда разобраться и в тонкостях конфигурирования 1С 8.2, главное — желание. Всё что Вам нужно — найти хороший самоучитель по языку программированию 1С.
Русский синтаксис языка 1С
Интересной особенностью встроенного языка программирования 1С является двуязычный синтаксис команд: русский и английский. Русский язык программирования сильно удивляет новичков в сфере 1С программирования 8.2.
Сообщить ( «Привет, Мир!» ) ;
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Читайте также: