я чего-то не пойму, для чего все эти старания? бред полный... чтобы вы не писали, чтобы не создавали, уже давно достаточно того, что имеем... а это — игрушки, чтобы повышать значимость и стоимость ИТ... чтобы было чем баловаться, пока бизнес за это платит...
люди давно по_на_создавали инструменты конструирования автоматизированных бизнес-процессов и годами не лезут в код, лишь периодически дорабатывая архитектуру и под_настраивая интерфейсы и поведение под изменения, изредка дополняя интерфейсы плагинами с редкими и слишком частным поведением. больше времени уходит на многообразие отчетов, оценок на результаты деловой деятельности...
что людям не хватает? зачем весь это бред? еще время на изучение, на обучение, на оттачивание навыков, на адаптацию этих навыков для реальной жизни...
блин, все больше и больше дыр для хакинга.. скоро код вообще будет нечитабильным, и понимать его будет только тот, кто его написал, так как "верно замечено" — нет правил, нет контрактов, реализация на луне, динамические описания на марсе, что происходит, ни кто не знает...
я понимаю, что мое высказывание может быть оценено как шоковая реакция на очередное новшество после гряды новшеств, которые до конца то еще в жизнь не вошли, а тут новье, прет, как плеснь )))))
Здравствуйте, _FRED_, Вы писали:
_FR>Неужели DLR знает "из-под какого языка он работает", что бы разрешать перегрузки в соответствии с правилами компилятора? А какого конкретно компилятора?
Здравствуйте, shakm, Вы писали:
S>это очередной маркетинговый ход, попытка отхапать кусок рынка — дать динамическим языкам возможности фрэймворка..
Чорд, я жертва маркетинга!
S>а споры о преимуществах и недостатках строго-типизированных языков и глубоко динамических — стары как мир...
Ну да. Споры начинаются, когда любая из областей пытается на голубом глазу отхряпать кусок у другой.
Здравствуйте, Sinix, Вы писали:
S>>>Да, если вас не пугает Create("blablabla"). Впрочем, я бы решил дополнительными перегрузками или ручным кастингом. А>>например? А>>по вышеупомянотому примеру. надо мне по типу клиента создать для определенный тип ТС
S>public Car Create(OldClient client)
S>{
S> // ...
S>}
S>public Car Create(NewClient client)
S>{
S> // ...
S>}
S>public Car Create(ClientBase client)
S>{
S> OldClient old = client as OldClient;
S> if (old != null)
S> {
S> return Create(old);
S> }
S> else
S> {
S> NewClient new = client as NewClient;
S> // ...
S> }
S>}
Ну зачем же самому заниматься диспетчеризацией? Выигрыша никакого не будет.
S>public Car CreateCar(OldClient client) { }
S>public Car CreateCar(NewClient client) { }
// Не компилилprivate Car DynamicCreate(dynamic client) { return CreateCar(client); }
S>public Car Create(ClientBase client)
S>{
return DynamicCreate(client);
S>}
По функциональности ничем не отличается от варианта с "client as …", но кода много меньше, что особенно будет заметно при многих поддерживаемых Client-ах. Но со строкой вызвать уже не выйдет.
Help will always be given at Hogwarts to those who ask for it.
Здравствуйте, Аноним, Вы писали:
А>Тут все с точностью до наоборот — вы, ОПЫТНЫЕ ЧУЛОЧНИЦЫ, и отрасль создает ВАМ (самой себе) работу, запудривает мозги и создает сложности ))))) Если мы начнем спорить, то в роли луддита окажетесь вы
это очередной маркетинговый ход, попытка отхапать кусок рынка — дать динамическим языкам возможности фрэймворка..
The purpose of the DLR is to enable a system of dynamic languages to run on the .NET Framework and give them .NET interoperability. The DLR introduces dynamic objects to C# and Visual Basic in Visual Studio 2010 to support dynamic behavior in these languages and enable their interoperation with dynamic languages.
а споры о преимуществах и недостатках строго-типизированных языков и глубоко динамических — стары как мир... с одними меньше затрат на тестирование и меньше багов в будущем при эксплуатации, с другими быстрее развивается код.. одни применимы для управления космическими кораблями и атомными реакторами, другие для фривольностей на вэбстраничках..
Здравствуйте, Аноним, Вы писали:
А>Уважаемый, может быть вы путаете понятия.. я сторонник, так сказать, анти-лудизма...
А>
А>...уничтожение двух чулочных станков, производивших дешёвые чулки и подрывавших дела опытных вязальщиц...
А>
А>Тут все с точностью до наоборот — вы, ОПЫТНЫЕ ЧУЛОЧНИЦЫ, и отрасль создает ВАМ (самой себе) работу, запудривает мозги и создает сложности ))))) Если мы начнем спорить, то в роли луддита окажетесь вы
Если не затруднит, не могли бы вы назвать марку и производителя "чулочного станка"? Заинтересовали.
Re[3]: [Загадка] Null.Value
От:
Аноним
Дата:
11.10.10 13:08
Оценка:
Здравствуйте, QrystaL, Вы писали:
QL>Имелся в виду более универсальный вариант, по типу такого: QL>{Любой ссылочный тип} {идентификатор} = Null.Value; // Возвращает null
Ну а конвертеры и переопределенные операторы не пойдут? Такое возможно в C# ?
Здравствуйте, QrystaL, Вы писали:
QL>Ага, не очень логично смотрится =)
Так вы не томите — угадал, нет?
Re[4]: [Загадка] Null.Value
От:
Аноним
Дата:
11.10.10 15:38
Оценка:
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Аноним, Вы писали:
А>>т.е. это нормальное применение dynamic? А>>получается можно писать фабрику таким макаром:
S>Да, если вас не пугает Create("blablabla"). Впрочем, я бы решил дополнительными перегрузками или ручным кастингом.
например?
по вышеупомянотому примеру. надо мне по типу клиента создать для определенный тип ТС
Здравствуйте, Аноним, Вы писали:
S>>Да, если вас не пугает Create("blablabla"). Впрочем, я бы решил дополнительными перегрузками или ручным кастингом.
А>например? А>по вышеупомянотому примеру. надо мне по типу клиента создать для определенный тип ТС
public Car Create(OldClient client)
{
// ...
}
public Car Create(NewClient client)
{
// ...
}
public Car Create(ClientBase client)
{
OldClient old = client as OldClient;
if (old != null)
{
return Create(old);
}
else
{
NewClient new = client as NewClient;
// ...
}
}
Здравствуйте, Lloyd, Вы писали:
_FR>>Ну зачем же самому заниматься диспетчеризацией? Выигрыша никакого не будет.
S>>>public Car CreateCar(OldClient client) { }
S>>>public Car CreateCar(NewClient client) { }
_FR>>// Не компилил
_FR>>private Car DynamicCreate(dynamic client) { return CreateCar(client); }
S>>>public Car Create(ClientBase client)
S>>>{
_FR>> return DynamicCreate(client);
S>>>}
L>А в чем смысл дополнительного DynamicCreate? Проще сразу return CreateCar((dynamic)client)
Скорее всего. Не компилил, не разбирал, какие ещё хитрости могут быть.
Help will always be given at Hogwarts to those who ask for it.
Re[8]: [Загадка] Null.Value
От:
Аноним
Дата:
11.10.10 17:49
Оценка:
Здравствуйте, Lloyd, Вы писали:
L>А в чем смысл дополнительного DynamicCreate? Проще сразу return CreateCar((dynamic)client)
можно кратко для тех, кто пока не добрался до чтения про dynamic.
т.е. основное применение dynamic это динамическая подстановка типа как я привел здесь
Не совсем, речь идёт о добавлении позднего связывания. Если совсем уплощённо — о переносе части работы для компилятора в рантайм. Например, разрешение перегрузок будет выполняться по тем же правилам, что и при компиляции.
Из возможных фич — облегчение работы со всяким COMом/динамически сгенерированным кодом/duck typing.
Другое дело, что применить dynamic во вред (снижение производительности/понятности программы, больше ошибок в рантайме) довольно легко. И, в принципе, добавление dynamic идёт слегка вразрез с попыткой принести в mainstream статическую валидацию кода aka CodeContracts.
А>вопрос отсутсвия имплементации ложится на плечи программера?
DLR прожуёт что сможет, что не сможет — выплюнет исключением
?
S>Не совсем, речь идёт о добавлении позднего связывания. Если совсем уплощённо — о переносе части работы для компилятора в рантайм. Например, разрешение перегрузок будет выполняться по тем же правилам, что и при компиляции.
При компиляции каким компилотором? Например, в сходных ситуациях бэйсик и шарп по-разному разрешают перегрузки. Неужели DLR знает "из-под какого языка он работает", что бы разрешать перегрузки в соответствии с правилами компилятора? А какого конкретно компилятора?
Help will always be given at Hogwarts to those who ask for it.
Уважаемый, это вам в философию надо, там давно не было холиваров на тему IT-луддизма. В профильном форуме вас не поймут.
Re[14]: [Загадка] Null.Value
От:
Аноним
Дата:
12.10.10 05:07
Оценка:
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Аноним, Вы писали:
S>Уважаемый, это вам в философию надо, там давно не было холиваров на тему IT-луддизма. В профильном форуме вас не поймут.
Уважаемый, может быть вы путаете понятия.. я сторонник, так сказать, анти-лудизма...
...уничтожение двух чулочных станков, производивших дешёвые чулки и подрывавших дела опытных вязальщиц...
Тут все с точностью до наоборот — вы, ОПЫТНЫЕ ЧУЛОЧНИЦЫ, и отрасль создает ВАМ (самой себе) работу, запудривает мозги и создает сложности ))))) Если мы начнем спорить, то в роли луддита окажетесь вы
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Аноним, Вы писали:
S>Уважаемый, это вам в философию надо, там давно не было холиваров на тему IT-луддизма. В профильном форуме вас не поймут.
На самом деле он не настолько уж и не прав. Мне в свое время пришлось где-то с полгода поработать axapta-программистом. Когда я вернулся на .Net, меня очень неприятно поразила медленная скорость разработки под .Net.
L>На самом деле он не настолько уж и не прав. Мне в свое время пришлось где-то с полгода поработать axapta-программистом. Когда я вернулся на .Net, меня очень неприятно поразила медленная скорость разработки под .Net. Ну да. В своей области даже 1с рулит.
Здравствуйте, Sinix, Вы писали:
L>>На самом деле он не настолько уж и не прав. Мне в свое время пришлось где-то с полгода поработать axapta-программистом. Когда я вернулся на .Net, меня очень неприятно поразила медленная скорость разработки под .Net.
S>Ну да. В своей области даже 1с рулит.
Эта "своя область" на самом деле гораздо шире, чем считают большинство .Net-программистов. Для меня до сих пор остается загадкой, почему поставщики подобных решений не выдавили .Net/java.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Sinix, Вы писали:
L>>>На самом деле он не настолько уж и не прав. Мне в свое время пришлось где-то с полгода поработать axapta-программистом. Когда я вернулся на .Net, меня очень неприятно поразила медленная скорость разработки под .Net.
S>>Ну да. В своей области даже 1с рулит.
L>Эта "своя область" на самом деле гораздо шире, чем считают большинство .Net-программистов. Для меня до сих пор остается загадкой, почему поставщики подобных решений не выдавили .Net/java.
Кстати, очень грамотное замечание.
Я раньше работал с 1с 7.7., параллельно с С, С++ и Delphi, так на 1с ну просто очень быстро и очень много можно было сделать при высокой стабильности решения, и с высокой интеграцией.
Тем более, в 1с если сразу в наглую модули писать как внешние текстовые файлы, то если не изменялась структура данных, а только поведение модуля, то приложение даже не надо было закрывать и перекомпилировать! Пользователи получая сообщение, что надо бы обновить такую то форму, просто закрывали форму и открывали снова. Вот вам динамика)))))
Давно не работал в 1с 7, но вот почитал немного восьмерку, так вообще кошмар. Это решение может заткнуть все дыры.
И по стоимости для бизнеса — это лучше чем аутсорсинговая контора с ее собственной крутой системой на супер новых языках и фрэймворках. Да и по интеграции и стабильности и масштабируемости решений — лучше (правда это мое мнение ), и бизнесу выгоднее связаться с 1с...
Повторюсь — это такое вот мнение, навеянное постом и наблюдениями за компаниями с крупными информационными системами. Правда не все достаточно грамотно используют 1с.