Мое личное мнение, что оценка языка должна отталкиваться от предметной области. Поверь я обеими руками за С#. Но есть много факторов, что бы я поднимал руки и за 1С и за Питона итд.
1. Позднее связывание, и работа с объетами неопределенного типа. Здесь рулят аналоги IDispatch. И никакая статическая типизация не спасет.
2. Читабельность кода. Она заключается не только в ручках, но и возможностях языка, чем сложнее тем больше наворотов, где без поллитры не разберешься, даже в собственном коде (когда он писался в момент озарения
Чем проще язык, тем меньше возможности обусфактить код.
Я лично изучал бухгалтерию исключительно по исходникам. И есть опыт написания на типизированном языке с автокомплитом итд, разница по скорости и читабельности всеже существует, не в пользу компиляторов.
Чем проще язык, тем больше можно найти (обучить) специалистов которые бы понимали как предметную область, так и умели это программировать, не влезая во всякие языковые дебри и фичи, в том числе и на родном для них лингвистическом языке. Насчет ошибок итд, то вырабатывается некий стиль, снижающий этот риск (опять же смотрим 1 где статическая типизация не спасает, а наступить на теже грабли легко и со статической типизацией).
И поверь мной на 1С написано многие мегабайты кода и ничего страшного.
По поводу скорости, то во многих случаях лимитирующей стадие является отнюдь не среда исполнения. Смотрим на янус, поверь та же задача на 1С просто летала бы (ах этот долбанный Аксесс).
Для каждой задачи свой язык
S> По поводу скорости, то во многих случаях лимитирующей стадие является отнюдь не среда исполнения. Смотрим на янус, поверь та же задача на 1С просто летала бы (ах этот долбанный Аксесс).
LCR>Янус не летает, потому что он активно использует высокоуровневые средства. Впрочем производительности для многих достаточно.
Бедный янус был приведен любителям скорости компиляторов. А многим хватает скорости хватает и интерпитирующих сред.
Все должно применяться по месту, учитывая огромное количество факторов.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S> По поводу скорости, то во многих случаях лимитирующей стадие является отнюдь не среда исполнения. Смотрим на янус, поверь та же задача на 1С просто летала бы (ах этот долбанный Аксесс).
RSDN-клиент на 1С... Ммм... Свежо, свежо... А почему бы и нет, собственно, если на восьмерке... Должно получиться довольно халявно, не так ли, как думаешь?
Здравствуйте, Gaperton, Вы писали:
G>Здравствуйте, Serginio1, Вы писали:
S>> По поводу скорости, то во многих случаях лимитирующей стадие является отнюдь не среда исполнения. Смотрим на янус, поверь та же задача на 1С просто летала бы (ах этот долбанный Аксесс).
G>RSDN-клиент на 1С... Ммм... Свежо, свежо... А почему бы и нет, собственно, если на восьмерке... Должно получиться довольно халявно, не так ли, как думаешь?
Ну движок аля 1С делается за неделю
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, Gaperton, Вы писали:
G>>Здравствуйте, Serginio1, Вы писали:
S>>> По поводу скорости, то во многих случаях лимитирующей стадие является отнюдь не среда исполнения. Смотрим на янус, поверь та же задача на 1С просто летала бы (ах этот долбанный Аксесс).
G>>RSDN-клиент на 1С... Ммм... Свежо, свежо... А почему бы и нет, собственно, если на восьмерке... Должно получиться довольно халявно, не так ли, как думаешь? S> Ну движок аля 1С делается за неделю
Мы пробовали. Оказалось, что не все так просто, как кажется. Пришли к выводу, что проще и дешевле купить настоящий движок 1С вместе со всеми прелестями, которые дает среда разработки и типовыми решениями в исходниках. За такие деньги — это просто подарок. Особенно, если имеешь 50% скидку .
Кстати, в самом 1С они очень многие вещи для себя, не относящиеся к учету, пишут на "Предприятии". В частности, прога-редактор контента их дисков с "информационным сопровождением" (что-то типа журнала) написана на 1С. Я был в шоке — выяснилось, что так проще.
Я к чему . Шутки шутками, а вполне может оказаться, что на 1Сv8, с его встроенной поддержкой XML, прозрачной работой с БД (объекты персистентные сами по себе — с точки зрения программера 1С очень похожа на объектную БД), полноценным гуем, и полной поддержкой ActiveX написать RSDN-клиента окажется проще, чем на С# . Я в этом почти уверен .
S>> Ну движок аля 1С делается за неделю G>Мы пробовали. Оказалось, что не все так просто, как кажется. Пришли к выводу, что проще и дешевле купить настоящий движок 1С вместе со всеми прелестями, которые дает среда разработки и типовыми решениями в исходниках. За такие деньги — это просто подарок. Особенно, если имеешь 50% скидку .
За такие деньги можно каждый год покупать по новой конфигурации . Что зачастую я и наблюдал.
G>Кстати, в самом 1С они очень многие вещи для себя, не относящиеся к учету, пишут на "Предприятии". В частности, прога-редактор контента их дисков с "информационным сопровождением" (что-то типа журнала) написана на 1С. Я был в шоке — выяснилось, что так проще.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Так динамически типизируемый язык рулит.
В случае 1С дело не только и не столько в динамической типизации. Это один из кирпичиков в их решении. Выигрыш получается в первую очередь за счет следующих вещей:
1) Автоматическая персистентность бизнес-объектов. Все "существенные" объекты хранятся в БД, кэшируются прозрачным образом, сохраняются и восстанавливаются сами, по мере необходимости. Об этом просто не надо думать. Есть язык запросов, правда, довольно странный. Имеем в результате нечто, очень похожее на объектную БД.
2) ГУЙ привязывается к бизнес-объектам простым и прозрачным образом — там эффективно реализованные "живые" контролы. Система сохраняет состояние визуальной формы автоматически, и в большинстве случаев об этом тоже думать не надо.
3) Наследоваться бизнес-объекты друг от друга не могут, это, в общем, плохо. Поэтому язык динамически типизирован — это позволяет писать полиморфный код не прибегая к наследованию. В результате все получается reasonably well. Использование динамически типизированного языка позволяет заметно упростить систему и язык, и совсем немного проиграть при этом в удобстве. В целом — удачный инженерный компромис.
4) Великолепный редактор печатных форм — а-ля Excel. Вне конкуренции. Использование динамически типизированного языка и позднего связнывания позволяет внедрять фрагменты кода непосредственно в ячейки таблицы. Этот код потом выполняется в контексте вызывающего. Круто и мега-удобно.
5) Нет клиентской и серверной части — с точки зрения программера решение выглядит как монолитное приложение. Платформа сама нагружает серверную часть. Подобный подход применялся в Borland IntraBuilder, если кто помнит такой продукт. Удобно.
Короче, при правильном применении этой ботвы выходит, что 90% кода, который ты пишешь — это чистая бизнес-логика. Все остальное, не относящееся к предметной области, делается за тебя системой. В этом выигрыш, в этом и грабли — система, в целом, заточена под одну идеологию организации ГУЯ (Справочник-Документ-Отчет), и под достаточно узкий класс задач.
Здравствуйте, Gaperton, Вы писали:
G>Я к чему . Шутки шутками, а вполне может оказаться, что на 1Сv8, с его встроенной поддержкой XML, прозрачной работой с БД (объекты персистентные сами по себе — с точки зрения программера 1С очень похожа на объектную БД), полноценным гуем, и полной поддержкой ActiveX написать RSDN-клиента окажется проще, чем на С# . Я в этом почти уверен .
Гы-гы. Ты сначала в wsdl RSDN-а посмотри.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Gaperton, Вы писали:
G>1) Автоматическая персистентность бизнес-объектов. Все "существенные" объекты хранятся в БД, кэшируются прозрачным образом, сохраняются и восстанавливаются сами, по мере необходимости. Об этом просто не надо думать. Есть язык запросов, правда, довольно странный. Имеем в результате нечто, очень похожее на объектную БД.
В 1С бизнес объекты скорее похожи на DTO, так как там нет ничего похожего на IdentiyMap, и соответственно можно иметь несколько копий объекта в памяти. Что в свою очередь приводит к тому, что измененный объект (копию) необходимо вручную save'ить.
Какая же это автоматическая персистентность? Это классический подход: считал, изменил, записал.
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Гы-гы. Ты сначала в wsdl RSDN-а посмотри.
Не, ну почему, если модуль синхронизатора написать на шарпе и подцепить его через СОМ ... Впрочем слухи о том, что на 1C реализовать янус проще сильно преувеличены. Даже для примитивнейшей реализации придется поковыряться, дабы реализовать необходимые алгоритмы. Дальше хуже — GUI в 1С примитиный и не расширяемый. Чем к примеру заменить TreeGrid или PropertyGrid я даже не представляю. Ну и наконец сложность януса не столько в БД, она в нем примитивная, сколько в большом количестве прикладного функционала, а его 1С реализовать ничем не поможет, а скорее наоборот, усложнит.
AVK>Не, ну почему, если модуль синхронизатора написать на шарпе и подцепить его через СОМ ... Впрочем слухи о том, что на 1C реализовать янус проще сильно преувеличены. Даже для примитивнейшей реализации придется поковыряться, дабы реализовать необходимые алгоритмы. Дальше хуже — GUI в 1С примитиный и не расширяемый. Чем к примеру заменить TreeGrid или PropertyGrid я даже не представляю. Ну и наконец сложность януса не столько в БД, она в нем примитивная, сколько в большом количестве прикладного функционала, а его 1С реализовать ничем не поможет, а скорее наоборот, усложнит.
Можно этот самый прикладной функционал, хотя бы бегло, описать. Потому как я ничего особого, кроме списка оценок для поста, не заметил.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Можно этот самый прикладной функционал, хотя бы бегло, описать.
Бегло содержимое почти 3 мег кода? Боюсь не получится. Открывай исходники и смотри сам что и сколько занимает. Вот к примеру 300К занимает подсистема конфигурирования. Вряд ли на 1С получится меньше, если только не скатится до их плоского списка констант или справочника.
ANS> Потому как я ничего особого, кроме списка оценок для поста, не заметил.
Признак того что этот функционал грамотно раскидан и не мозолит глаза, если не нужен .
Здравствуйте, AndrewVK, Вы писали:
ГВ>>Гы-гы. Ты сначала в wsdl RSDN-а посмотри. AVK>Не, ну почему, если модуль синхронизатора написать на шарпе и подцепить его через СОМ ...
Ну вот в том-то и дело. Тогда проще весь Янус переписать на шарпе ещё раз. Вот ежли вы вместо нетипизированных датасетов будете типизованные кидать... Тогда будет попроще.
AVK>Впрочем слухи о том, что на 1C реализовать янус проще сильно преувеличены. Даже для примитивнейшей реализации придется поковыряться, дабы реализовать необходимые алгоритмы. Дальше хуже — GUI в 1С примитиный и не расширяемый. Чем к примеру заменить TreeGrid или PropertyGrid я даже не представляю. Ну и наконец сложность януса не столько в БД, она в нем примитивная, сколько в большом количестве прикладного функционала, а его 1С реализовать ничем не поможет, а скорее наоборот, усложнит.
+1
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Ну вот в том-то и дело. Тогда проще весь Янус переписать на шарпе ещё раз. Вот ежли вы вместо нетипизированных датасетов будете типизованные кидать... Тогда будет попроще.
Здравствуйте, AndrewVK, Вы писали:
ГВ>>Ну вот в том-то и дело. Тогда проще весь Янус переписать на шарпе ещё раз. Вот ежли вы вместо нетипизированных датасетов будете типизованные кидать... Тогда будет попроще.
AVK>Возможно, но, ИМХО, не особо.
Попроще будет в том смысле, что можно будет цеплять не .Net-овские клиенты Web-сервисов. В принципе, их можно и сейчас подцепить, но уж больно геморройно и рискованно.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Попроще будет в том смысле, что можно будет цеплять не .Net-овские клиенты Web-сервисов.
И чем в этом отношении типизированные датасеты лучше? И там и там они на примитивные типы не отображаются и скорее всего xml придется парсить руками. Ну разве что схема у типизированных поподробнее будет, но это мелочи.
Здравствуйте, stalcer, Вы писали:
S>Здравствуйте, Gaperton, Вы писали:
G>>1) Автоматическая персистентность бизнес-объектов. Все "существенные" объекты хранятся в БД, кэшируются прозрачным образом, сохраняются и восстанавливаются сами, по мере необходимости. Об этом просто не надо думать. Есть язык запросов, правда, довольно странный. Имеем в результате нечто, очень похожее на объектную БД.
S>В 1С бизнес объекты скорее похожи на DTO, так как там нет ничего похожего на IdentiyMap, и соответственно можно иметь несколько копий объекта в памяти.
Приведите пожалуйста пример для элементов справичников и документов.
S>Что в свою очередь приводит к тому, что измененный объект (копию) необходимо вручную save'ить.
Вызвать к нему "Сохранить"? В чем проблема — считайте, что изменения элементов выполняются в рамках транзакции, а "Сохранить" эту транзакцию коммитит. И это очень, очень хорошо. Кстати, на самом деле так оно и есть — вы можете обозначать границы транзакции и руками, например.
Здравствуйте, AndrewVK, Вы писали:
ГВ>>Попроще будет в том смысле, что можно будет цеплять не .Net-овские клиенты Web-сервисов.
AVK>И чем в этом отношении типизированные датасеты лучше? И там и там они на примитивные типы не отображаются и скорее всего xml придется парсить руками. Ну разве что схема у типизированных поподробнее будет, но это мелочи.
Тем, что можно будет gSOAP натравить, например. А то он <s:any/> не переваривает (и правильно делает). А схему вместе с датасетом передавть не надо, поскольку если она известна, то что с ней делать — понятно, а если изначально неизвстна, то и что с ней делать, когда получишь — тоже не догадаешься. Пусть уж лучше всё в WSDL будет, с optional-колонками. Ну, или, на худой конец — отдельные xsd. Главное, чтобы они были изначально известны.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!