(1) Если мне нужно вскопать грядку, я буру лопату. Если нужно уничтожить траву по периметру - беру косу.
Да, косой можно ковырять землю, а лопатой сбивать траву, но это не их специальность.
Как можно сравнить разные языки с разными задачами? Это то же самое, что сравнивать лопату и косу - что круче.
(3) Да, интересна средняя температура по больнице. Допустим есть серия одинаковых задач, даже без интерфейса, просто процедуры - реализация алгоритма. Что отработает быстрее 1С или Python, 1C или Java и т.п.
(4)
быстрее - это относительно :
написать на ява не равно на питон
одно быстрее будет работать, но долго код "составлять и отлаживать"
на разовую задачу нет смысла
питон работает только с одним ядром :)
но...вы можете за 15минут составить скрипт и он будет работать 6часов
и на яве также или на 1с составите та же за 6часов и работать будет за 15минут :)
Без средств для создания GUI, без средств для рисования отчетов...
Язык программирования общего назначения против специализированной базы данных... Да, есть что сравнить...
против специализированной базы данных... ? --- ничего себе подняли язык 1с
вы напишите gimp inkscape blender3d и много чего на 1с и тогда узнаем ваше GUI
я же предупреждал :
а инфостарт может забросать помидорами за другие языки :)
(14) Потрясающе, а мужики то и не знали... И он прямо "из коробки" с питоном? Как и прочие GUI? И совершенно бесплатный? И учить им пользоваться намного проще чем форму в 1с набросать?
1с проф минимум любой конфигурации
или вы пишете задачи на "платформе обучения программированию" :)
потом окажется, что на старом компе 1с даже не запустится и понеслась ......
так что будем сравнивать :
1с программист, который слышал о питоне и не знает,что с ним делать
программист на питоне, который слышал об 1с,но не хочет с ним связываться :)
начало "священных войн" никогда не можно узнать, но по направлению ветра - можно увидеть :)
Вот, как раз "средняя температура по больнице" будет одинаковая.
Если рассматривать чисто "просто процедуры - реализация алгоритма", то как правило 1С будет уступать по большей части.
Но, попробуйте на python нарисовать что-то подобное типовых от 1С (УТ или ERP). Много новых ругательств изучите.
Скорость разработки выше на 1С, если устраивает ее модель.
Более гибкое решение можно сделать на python (java и т.д.), но с ее особенностями.
Да даже просто попробуйте реализовать математические вычисления больших чисел на типизированных языках. Будет весело )
Да, тему по сути можно сузить до алгоритмов с числами.
Снова не корректное сравнение.
Как уже приводил пример: "попробуйте реализовать математические вычисления больших чисел на типизированных языках".
С другой стороны у python много встроенных методов манипулирования с коллекциями.
Тут тоже не все так однозначно. Разный подход.
По большей части, 1С компилирует код в байткод при запуске.
У Python (если брать стандартный вариант основанный на CPython) все проще и сложнее одновременно. Большинство его библиотек написаны на С/С++.
При выполнении кода он может как интерпретировать его и, если успевает, то и компилировать на лету. То уже при последующем выполнении этого кода может выполняться скомпилированный код.
Ну и работа с ядрами. Там все сложно. Клиент 1С работает только в одном потоке. Сервер уже может работать многопоточно.
У python тоже много условностей. В основном он работает только с одним ядром, но у него есть разные версии (JPython к примеру), которые могут.
Ну и стоит учитывать, что платформа 1С, хоть и написана на С++, но сама по себе сложная и ресурсоемкая.
По большей части, 1С компилирует код в байткод при запуске.
Вероятнее всего 1С не компилирует "код" (под этим я понимаю код программиста в модулях) в "байт код" при запуске, он уже скомпилирован в интерпретируемый код, дальше просто работает интерпретатор с ним. Возможно вы написали о том же.
При выполнении кода он может как интерпретировать его и, если успевает, то и компилировать на лету. То уже при последующем выполнении этого кода может выполняться скомпилированный код.
Питон компилирует скрипты в исполняемые программные (exe) модули?
Вероятнее всего 1С не компилирует "код" (под этим я понимаю код программиста в модулях) в "байт код" при запуске, он уже скомпилирован в интерпретируемый код, дальше просто работает интерпретатор с ним. Возможно вы написали о том же.
Нет. Он именно компилирует в байт-код при запуске. Причем не все сразу. Общие модули (не глобальные) и модули объектов метаданных компилируются по мере их использования.
Можете проверить:
Сделайте ошибку в не используемом месте кода, скажем модуля формы справочника. Ошибка будет выброшена при попытке открыть этот справочник, хотя выполнение кода до нее никак не добирается. Именно при первом использовании нужного модуля будет компиляция в байт-код.
Тут на форуме есть статься про ассемблер для 1С.
Пример байт-кода можете посмотреть просто: Создайте свою поставке и не включите текст модуля для нее. Полученную конфигурацию разверните и выгрузите файлы. Там можно будет найти файл bin, в котором и будет байт-код.
Пример байт-кода можете посмотреть просто: Создайте свою поставке и не включите текст модуля для нее. Полученную конфигурацию разверните и выгрузите файлы. Там можно будет найти файл bin, в котором и будет байт-код.
Интересно, я думал что уровень интерпретатора ограничивается иерархией: ПрограммныйМодуль - КодИнтерпретатора ({"Cmd",5,0, {1,1},) и т.д. А дальше ядро 1С выполняет КодИнтерпретатора. Не понимаю тогда смысла в 3 уровне - байткод. Это же не exe?
(23) выполнение байт-кода на виртуальной машине будет быстрее, чем использовать только чисто интерпретатор.
При использовании только интерпретатора придется или держать весь код в памяти, или каждый раз прочитывать код (одновременно анализируя на ошибки написания) и переводить его в свою выполняемую конструкцию построчно.
При предкомпиляции - весь модуль кода сразу единовременно переводится в байт-код и уже он в итоге выполняется.
Почему не делается сразу в exe. Вы знаете сколько времени может занять компиляция в исполняемый файл большого проекта?
Я тут как-то перекомпилировал динамические библиотеки qt5 в статические. На хорошем компе (i7 + 16Гб памяти и ssd) у меня это заняло около суток.
Так что предкомпиляция при запуске это не так уж и плохо.
(4) при реализации универсальных алгоритмов средствами языка 1С будет в среднем на порядок медленнее чем Python(Java), и на несколько порядков медленнее компилируемых языков. Причина этого в том, что в 1С по умолчанию используется "большая" математика для всех вычислений, включая выражения 2+2.
Наткнулся на интересный обзор по скорости :) Конечно все относительно, но показательно с другой стороны, интересно упоминание использования ядер. Хотя это тоже вопрос подхода в написании программного модуля или работы программного ядра (интерпретатора , в случае со скриптовыми языками)
Как можно видеть, Java единовременно использует минимум 4 ядра, в то время как программа на C++ — одно. Однако, этим нельзя объяснить превосходство в скорости в 8 раз, так как Java не задействует все ядра на 100%.
(26) Это, да но тема про ядро интерпретатора, разработчики же не рубят сук на котором сидят, они должны быть заинтересованы в конкурентности своего продукта. С точки зрения легкости построения БД 1С по сравнению с Python может и выигрывает на первый взгляд, что тоже не аксиома и можно спорить, поэтому для сравнительного анализа был выбран критерий работы алгоритмов с числовыми данными во множественных итерациях, т.е. достаточно примитивные вычисления не зависящие от других факторов архитектуры интерпретатора в целом, со всеми его возможностями.
поэтому для сравнительного анализа был выбран критерий работы алгоритмов с числовыми данными во множественных итерациях, т.е. достаточно примитивные вычисления не зависящие от других факторов архитектуры интерпретатора в целом, со всеми его возможностями.
Даже тут все не однозначно. Достаточно того, что python это типизированный язык. 1С нет.
Даже простое деление может дать совсем разный результат.
Если рассматривать только время выполнения 2+2, то python будет быстрее из-за низких расходов на платформу.
(29) И в целом может быть посыл темы даже в другом. Найти, если он все же есть, способ выжать из 1С по максимуму исходя из того что он является интерпретируемым языком. Избавляться в критичных модулях от псевдо-кода, оставлять байт-код? На сколько это увеличит скорость? Если по сути весь выполняемый процесс - это одна процедура, на время инициализации формирования байт-кода? Не очень большой выигрыш. Взять для сравнительного анализа, который проводили уже многие, скомпилированную программу и выполняемую процедуру на интерпретируемом языке - разница в скорости вычислений в 100-1000 раз. Так где получается узкое горлышко? В ядре виртуальной машины и как она работает видимо.
А может не стоит ожидать скорости от трактора, хотя выжать максимум очень хочется, хотя бы для того чтобы сказать себе самому - я сделал все что возможно. :)
P.S. Могу ошибаться в канонах определений, если что поправьте.
(30) узкое горлышко 1С это получение, обработка/отображение и запись данных. Вот из этого и исходите. Не стоит пытаться выжать зам байт-код.
Оптимизируйте получение только нужных данных, их хранение для быстрого получения и записи. Передачи данных между сервером и клиентом. Обход данных.
По сравнению с вышеуказанными действия выполнение оптимизации предварительного сохранения байт-кода несущественно. Ну, если только разнести код в общих модулях. Каждый общий модуль компилируется отдельно при первом к нему обращении.
(33)
главное, чтобы они опять не обновляли платформу 5 раз в месяц
и не обновляли типовые конфигурации с изменением названий ключевых сущностей
( может это будет "новый стандарт" )