Имя: Пароль:
1C
1С v8
v8: Когда в 1с появятся замыкания?
0 ERWINS
 
08.05.14
15:42
1. Не нужно 67% (10)
2. В 9.0 33% (5)
3. В 8.3.6 0% (0)
Всего мнений: 15

В место такого кода

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
    ОписаниеОповещения = Новый ОписаниеОповещения("ОбработатьОтвет", ЭтотОбъект);
    ПоказатьВопрос(ОписаниеОповещения, "Завершить работу системы?",РежимДиалогаВопрос.ДаНет, 60);
    Отказ = Истина;
    
КонецПроцедуры

&НаКлиенте
Процедура ОбработатьОтвет(РезультатВопроса, ДополнительныеПараметры) Экспорт
    
    Если РезультатВопроса <> КодВозвратаДиалога.Нет Тогда
        ЗавершитьРаботуСистемы(Ложь);
        Закрыть();
    КонецЕсли;
    

КонецПроцедуры


Писать более простой

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
    ОписаниеОповещения = Новый ОписаниеОповещения("ОбработатьОтвет", ЭтотОбъект);
    ПоказатьВопрос((РезультатВопроса, ДополнительныеПараметры) => (Если РезультатВопроса <> КодВозвратаДиалога.Нет Тогда
        ЗавершитьРаботуСистемы(Ложь);
        Закрыть();
    КонецЕсли;) , "Завершить работу системы?",РежимДиалогаВопрос.ДаНет, 60);
    Отказ = Истина;
    
КонецПроцедуры
176 quest
 
13.05.14
14:13
(173) замыкание это не заклинание! ну разбери ты любое замыкание в let-форму и увидишь что параметры передавать надо, а раз надо, то от необходимости сериализовать данные не избавиться. Ты прикольно взял 1 и 2 в части параметров. А если мне надо на сервер передать содержимое динамической таблицы?
177 quest
 
13.05.14
14:15
и втрое - замыкания сами могут быть параметром. и как тогда не запутаться бедному адынэснику?
178 Serginio1
 
13.05.14
14:16
(174) Замыкание это захват парам1 парам2 РевизитФрмы
Код то будет выполняться на сервере, что аналогично
&НаСервереБезКонтекста
Функция П2(парам1,парам2,парам3)

176 передавай что угодно смыл замыкания это уменьшить код
Для примера на C# http://www.rsdn.ru/article/csharp/Closure_in_Csharp.xml#EDG
создается отдельный класс
179 Serginio1
 
13.05.14
14:19
(177) Я не пойму в чем проблема то, что 1С ки тупые что ли?
Не вижу проблемы замыканий в качестве переменной. Наоборот вижу одни только плюсы. Проблема больше в реализации в 1С вот у кого проблема.
180 quest
 
13.05.14
14:40
Хендерсон "Функциональное программирование", читаешь, много думаешь и  потом (если будешь так уж уверен) пытаешься озвучить мысль что в 1С с этим проблемы не будет.
181 quest
 
13.05.14
14:40
и что 1С это так жизнено необходимо
182 Serginio1
 
13.05.14
14:57
(180) И как это в C# по проблем не видят?
Не путай чистую функциональщину с гибридными языками.
Хотя ограниченный патерн матчинг вещь нужная.
(181) Для серверных вызовов да. И это тебе подвердят многие когда на каждый чих нужно городить отдельный метод.
183 Леша1с
 
13.05.14
14:59
(179)>>Проблема больше в реализации в 1С вот у кого проблема.
есть такая проблема.
Поэтому никогда и не будет реализована в 1С.
184 Леша1с
 
13.05.14
15:01
(178)>>Код то будет выполняться на сервере
у 1С свое понимание, что исполнять на сервере, что - на клиенте.
В 1С все это будет глючить неимоверно, т.к. обработка таких сущностей вне компетенции разработчиков 1С.
Вспомнить хотя бы полуработающую Перейти...Метка (типа Goto...)
185 ДенисЧ
 
13.05.14
15:02
Вот блин... У Лёши даже перейти не работает...
186 Serginio1
 
13.05.14
15:02
(181) Или просто даже делегаты или лямбды v8: Отбор с условием

(183) Посмотрим. Что то ты совсем плохого мнения о разработчиках 1С. Там проблем больших то нет. Обычный рефакторинг
187 Ювелир
 
13.05.14
15:04
Чего-то не понял, или столько постов написано из-за размещения текста процедуры внутри вызывающей процедуры? Плюс - это использование общего контекста процедур ?
188 Serginio1
 
13.05.14
15:05
(184) Ты не поверишь я еще программировал на Бухгалтерии 6.0
7.0 и на моих глазах многое в 1С менялось. Так что посмотрим.
189 Serginio1
 
13.05.14
15:06
(187) Да. Люди не видят пользы, либо не считаю захват контекста замыканием.
190 quest
 
13.05.14
15:13
(185) ну да. не работает как минимум тут v8: Выполнить. Весь мозг поломал
(189) Открой глаза, в конце концов замыкания вполне можно реализовать через  напиши ВК.
191 Леша1с
 
13.05.14
15:13
(184)>>Там проблем больших то нет
ну да, нет, только неработающая платформа ))
А так остальное правится в конфигураторе.
192 quest
 
13.05.14
15:13
через  напиши ВК. = через ВК, напиши .
193 Леша1с
 
13.05.14
15:15
(187) ну было такое в 7.7. Раз говоришь, начинал с 6.0 - должен знать.
И где теперь этот контекст? в свете " я еще программировал на Бухгалтерии 6.0, 7.0 и на моих глазах многое в 1С менялось"
194 Леша1с
 
13.05.14
15:16
(193) к (189)
195 Леша1с
 
13.05.14
15:17
+ 193
ах, да, приобрел форму клиента УФ ))
196 Serginio1
 
13.05.14
15:18
(190) То есть тебе подход в 171 не нравится. Все оставить по старому через процедуры? При чем тут ВК.
(193) Ты не видишь разницу между Бухгалтерия 6.0 и Предприятие 8.3?
197 Serginio1
 
13.05.14
15:22
(190) Вот лямды и замыкания нужны, для того что бы к Выполнить по меньше обращаться. Для тебя Выполнить это нормально с которыми сам разобраться не можешь, а замыкания это зло.
198 Леша1с
 
13.05.14
15:28
(196) не вижу
как там не работали расчеты, так здесь - не работает сбор данных.
Какая разница, что не работает, если воз и ныне там.
199 Леша1с
 
13.05.14
15:29
+ а с 8.3 ты, видимо, сам не работал. Там даже супротив глюкавой 8.2 полная попа.
200 vqwy
 
13.05.14
15:30
200
201 quest
 
13.05.14
15:44
(197) зачем нужны лямбда, замыкание -  я как для себя знаю и где нужно применяю, зачем это в 1С -  не понимаю, вся ветка не смогла убедить в необходимости. Вот честно - никакой выгоды  не вижу.
202 Ювелир
 
13.05.14
15:45
Т.е. попытка реализовать сохранение контекста процедуры выполняемой на сервере, когда может потребоваться вызвать ее еще раз? Вместо явного сохранения на клиенте? Мне кажется 1с от этого пытается уйти. Ибо все это хорошо когда такие процедуры малы и контекста не много. Программист задумывается на хрена он передает икспарам и игрекпарам, когда можно этого не делать (и из-за лени (да простят меня 1С-ники, конечно, это происходит из совершенно других, более высоких мотивов :) ) - оптимизирует передачу параметров, миграцию контекста - туда-сюда). Когда есть халявный метод позволяющий запихнуть тупо все и не разбираться - срабатывает закон лени. В результате опухает  передача контекста по пути клиент - сервер - клиент.

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

Не нужно
203 Serginio1
 
13.05.14
15:46
(198) Спасибо рассмешил. Ты для интереса почитай что такое Бухгалтерия 6.0. По твоим выводам на 1С писать вообще нельзя. А ведь пишут. А вэб клиент это уже отдельная платформа с использованием HTML JS.
По твоей логике Вэб клиент это чуть переделанный тольстый клиент?

(201) Ответь на 196 чем тебе не нравится подход в 171.
По твоей же логике Зачем нужны вычислить?
204 Serginio1
 
13.05.14
15:51
(202) Не должен опухать, так как компилятор должен анализировать код и если значения не изменяются то передавать только необходимые данные. Если есть изменения только в реквизитах то отслеживать эти реквизиты и изменять их на клиенте. Если изменяются табличные части то придется  передавать и их. Сейчас как раз многие ради лени используют На сервере передавая полный контекст.
205 quest
 
13.05.14
15:58
в (171) у тебя собственная реализация вычислить. Например так

МоеЗамыкание = новый Структура();
МоеЗамыкание.Вставить("Замыкание","Тип");
МоеЗамыкание.Вставить("х1 + х2 + х3","Код");
МоеЗамыкание.Вставить("1","х1");
МоеЗамыкание.Вставить("2","х2");
МоеЗамыкание.Вставить("3","х3");

Результат = моеВыполнить(моеЗамыкание);

функция МоеВыполнить(замыкание)
если замыкание.Тип = "Замыкание" тогда
строкакода = замыкание.Код;
для каждого х из Замыкание
   строкаКод = стрЗаменить(строкаКод, х.Ключ, х.Значение);
конеццикла;
возврат вычислилить (строкакод);
конецесли;
кнецфункции

Это будет прямо сейчас работать в коде, то что ты предлагаешь сделать - то же самое, но на уровне платформы, исходя из того что 1 и 2 как параметры очень легко передаются.
И проигнорировал вопрос - что будет если я захочу передать не числа, например захочу обойти строки динамической таблицы. И главное - как ЭТО по твоему должно реализоватся на платформе?

(204) А кто тебя обманул и сказал что 1С компилятор?
и что он что-то кому-то должен оптимизировать?
206 Ювелир
 
13.05.14
16:09
(204) Хм, а на счет #НаСервере - может тогда и не нужно более никаких других методов?

(204) понятно, что транслятор, а не компилятор (хотя, у 1с есть система предварительной компиляции).

"анализировать код и если значения не изменяются то передавать только необходимые данные" - я бы заменил "значения" на используемые и/или изменяемые переменные, так как, имено это, на мой взгляд, имеется ввиду.
207 Serginio1
 
13.05.14
16:17
(205)  Смысл замыкании как раз в рефакторинге.
Я тебе уже приводил пример как это реализовано в Net.
Замыкания нужны для упрощения кода.
(206) Так скажем в зависимости от мутабельности по разному  передача. Например касаемо табличной части если к контексте замыкания нет вызова внешних процедур и  данные не изменяются, то передавать можно не всю табличную часть а только определенные колонки.
Хотя бы отслеживали и возвращали только используемые переменные и реквизиты.
208 Serginio1
 
13.05.14
16:20
(205) Так же как и сейчас передаешь на сервер различия нет.
Смысл в том что вместо
Процедура(парам1,парам2,...парам101)
Просто использовать захват этих переменных и реквизитов.
209 Serginio1
 
13.05.14
16:29
(205) Транслятор вместо компилятора тебя удовлетворит?
210 Serginio1
 
13.05.14
16:32
209+ wiki:Компилятор

Все равно нужно
1.Лексический анализ. На этом этапе последовательность символов исходного файла преобразуется в последовательность лексем.
2.Синтаксический (грамматический) анализ. Последовательность лексем преобразуется в дерево разбора.
3.Семантический анализ. Дерево разбора обрабатывается с целью установления его семантики (смысла) — например, привязка идентификаторов к их декларациям, типам, проверка совместимости, определение типов выражений и т. д. Результат обычно называется «промежуточным представлением/кодом», и может быть дополненным деревом разбора, новым деревом, абстрактным набором команд или чем-то ещё, удобным для дальнейшей обработки.
4.Оптимизация. Выполняется удаление излишних конструкций и упрощение кода с сохранением его смысла. Оптимизация может быть на разных уровнях и этапах — например, над промежуточным кодом или над конечным машинным кодом.
211 su_mai
 
13.05.14
16:32
(0) А когда в 1С один и тот же код сможет выполняться на вэб-клиенте, тонком клиенте, мобильном приложении, сервере. При этом еще указывать на каком именно сервере кластера и тп? :)
212 Serginio1
 
13.05.14
16:48
(205) Заметь насколько твой код больше обычного замыкания
x1=1; x2=2; x3=3;
Лямбда=() => x1+x2+x3;

результат=Лямбда();
213 Asmody
 
13.05.14
16:53
(212) и сразу вопрос:
если после твоего кода написать

х1=2; х2=3; х3=4;
результат1 = Лямбда();

чему будет равен результат1?
214 Asmody
 
13.05.14
16:54
точнее, чему _должен_ быть равен результат1
215 Serginio1
 
13.05.14
17:06
Я уже давал тебе ссылку как это в Net реализовано.
будет как при  х1=2; х2=3; х3=4;
То есть в замыкании ссылки на эти переменные.
216 Serginio1
 
13.05.14
17:09
215+ А что касается 171 там замыкание для передачи и возврата переменных реквизитов
217 Serginio1
 
13.05.14
17:12
Поэтому есть проблемы с переменными циклов
http://habrahabr.ru/post/36601/
218 Serginio1
 
13.05.14
17:13
Хотя в C#5 Это уже подправили
http://deilycode.ru/index.php/2013/08/foreach-closures/
219 Serginio1
 
13.05.14
17:33
(214) Если нужна неизменяемые то можно как то так
Функция ВернутьЗамыкание(знач x1,знач x2,знач x3)
Лямбда=() => x1+x2+x3;
возврат Лямбда
КонецФункции
220 Asmody
 
13.05.14
17:38
(215) а вот, например, у scala на этот счет есть иное мнение
221 Serginio1
 
13.05.14
17:48
(220) Ну я на скала не пишу. Ты не забывай что в функциональном программировании все рид онли (Неизменяемые типы, иммутабельные типы) окромя монад.

На C# будет так так как он гибридный язык.
А с точки зрения сервеных вызовов все изменения переменных в замыкании должно переносится и в вызывающий метод.
222 Asmody
 
13.05.14
17:54
(221) в scala в этом смысле проще — там мутабельность переменной определяется явно и контролируются компилятором. Но побочные эффекты возможны и в этом случае.
223 iamnub
 
13.05.14
17:57
(0)
Фуфел это всё, сынки.

В Informix можно было указывать - на каком месте цилиндра HDD хранить таблицу!

О как!
224 iamnub
 
13.05.14
18:02
Таблицы партионного учета - СТРОГО близка к стержню!

Восстановление партионного учета - танец у шеста!
225 Asmody
 
13.05.14
18:04
(223) в случае с SSD особенно актуально, да
226 Serginio1
 
13.05.14
18:09
(222) Ну вот здесь пишут что изменения видны
http://blog.lakhtin.com/post/2348212568/closure

scala> var more = 1
more: Int = 1

scala> val addMore = (x: Int) => x + more
addMore: (Int) => Int = <function1>


scala> more = 100
more: Int = 100

scala> addMore(10)
res17: Int = 110

scala> more = 200
more: Int = 200

scala> addMore(10)
res18: Int = 210
227 quest
 
13.05.14
21:41
(207) > Смысл замыкании как раз в рефакторинге. - в мемориз
> Я тебе уже приводил пример как это реализовано в Net.  - ты бы на пример реализации в lisp или clojure глянул. дя академической простоты - в ракетке
> Замыкания нужны для упрощения кода.  поржал

(212) еще раз - это возможная на сегодня реализация замыкания, которая не потребует переписывания платформы. Причем тут размер? или синтаксис? ну глянь ты просто на CLHS что можно сделать простым макросом. ветка же не про синтаксический сахар

(221) внезапно - у лиспа на этот счет тоже другое мнение.
(224) круть!


Резюмируя - ветка смысла не имеет, все говорят на разных языках.
228 Serginio1
 
14.05.14
10:57
(227) Смысл есть в упрощении кода. Еще раз в 212 намного проще использовать чем твой код в 205 почувствуй разницу и ржи себе на здоровье.

Для серверных вызовов это вообще уменьшение кода.
Пусть даже на начальном этапе можно сделать рефакторинг кода в серверную процедуру. То есть пишем код в одной процедуре, затем выделяем код который должен выполняться на сервере правой кнопочкой выбираем создать серверную процедуру задаем имя и в конфигураторе создается процедура и её вызов.
Если такое введут предлагаю тебе не пользоваться.

Кстати ссылочки приводи для общего развития.
229 quest
 
14.05.14
11:16
Код из (205) это то что сейчас уже будет работать, код из 212 - твоя мечта которая не скомпилиться ни под какой платформой. Так как 1С развивает платформу не пойми как, то надеяться что в новой версии введут тот синтаксический сахар что ты указал - глупо.  
Насчет ссылок - было уже. читай не вики, а учебники. Для понимания как это внутри работает - прочти Lisp in Small Pieces (есть и на русском ссылка - http://ilammy.github.io/lisp/ )
А вот по поводу "..правой кнопочкой выбираем создать серверную процедуру задаем имя и в конфигураторе создается процедура и её вызов. Если такое введут предлагаю тебе не пользоваться." - уже полгода пользуюсь. открой для себя снегопат.
230 Serginio1
 
14.05.14
11:41
(229) Здесь разговор не о том, что есть, а что желательно ввести для облегчения программирования. Т поверь я сам активно использую выполнить.
Тесты не проводил, но мне кажется что выполнить более медленая операция по сравнению с инлайн кодом.
v8: Отбор с условием

Во вторых приходится использовать текст, что неудобно по сравнению с кодом и синтаксическим контролем.

Ну вот видишь в снегопате то уже есть, значит не все так уж и сложно?
231 Serginio1
 
14.05.14
11:47
(229) В приведенной тобой ссылке нет того что захватываются значения, а не ссылки переменных.
232 quest
 
14.05.14
12:18
(230) хм.. то есть тебе достаточно регэкспов? так может так и стоило писать - хочу регэкспы выполянемые в конфигураторе, а не замыкания.
(231) ты сделал мой день. Но если что - прочти чуть дальше чем введение.
233 Serginio1
 
14.05.14
12:43
(232) Вообще то это регекспы это далеко не рефакторинг.
Так как нужно анализировать изменнеия и оптимизировать передачу и возврат данных. При этом выглядеть такой код будет как замыкания. Например на шарпе генерится отдельный класс. От этого суть замыкания не меняется. Меняется её реализация.

Насчет изучения поверь мне и без этого есть, что изучать поэтому и прошу дать ссылку на захват  переменных по ссылке или по значению в Лиспе.
234 quest
 
14.05.14
18:55
Когда в руках молоток, все кажется гвоздями. Если знаешь С# - то везде видишь классы. И вольно или невольно пытаешься применить свои знания и здесь.

По поводу захвата, освобождения и прочих терминов применяемых  в С# - не нашел адекватной замены, но можешь прочесть пункт про лексическую и динамическую видимость из выше приведенной ссылки.

200 постов - ни о чем.
235 Serginio1
 
14.05.14
19:08
(234) Посмотрим что будет в 9.0. Но рефакторинг уже в ближайших версиях могут вводить
236 iamnub
 
14.05.14
19:14
(234)
Хорошо сказал!
237 quest
 
14.05.14
19:49
рефакторинг - это не свойство языка. его ты и сейчас можешь делать (кроме лени - ничего не мешает). Если что - его еще на 77 можно было делать.
Замыкание - свойство языка, для его реализации в 1С придется переделывать платформу.
238 Serginio1
 
14.05.14
20:16
(237) Ну от рефакторинга wiki:Рефакторинг#.D0.92.D1.8B.D0.B4.D0.B5.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BC.D0.B5.D1.82.D0.BE.D0.B4.D0.B0_.28Extract_Method.29

Выделение метода недалеко и от совмещения серверного кода внутри клиентского, а там уже недалеко и до лямбд и замыканий.

А там уже и совсем рукой подать и до Linq и Linq to DB.
Начинать надо с малого.
239 Serginio1
 
14.05.14
20:20
В том числе можно создавать аналог расширяемого класса
v8: v8: Использование сборок .NET в 1С 7.x и 8.x
240 VladZ
 
14.05.14
20:20
(0) Очередная ненужная фигня... Не удивлюсь, если эту фигню пропихнут в каком-нибудь новом релизе.
241 quest
 
14.05.14
22:08
(238) с твоей точки зрения получается - теплое и кислое - практически идентичные понятия. И ничем  не отличаются от  твердого и желтого.
(239) Сейчас тебе что это мешает сделать?
(240) Не боись. не пропихнут. Потребности в этом нет. пара гиков  с С# и один с лиспом - не повод менять язык.
242 Asmody
 
14.05.14
23:40
(241) если в типовых начнут активно использовать фоновые асинхронные вызовы, то может что-то такое и появится. Сейчас реализация тех же фоновых отчетов больше похоже на шаманство, чем на технологию
243 Serginio1
 
15.05.14
10:32
(241) Здесь не проблема гиков. Linq это уже постоянное использование в том числе и Linq to EF. Индустрия развивается и борьба за клиентов идет полным ходом. Тот кто создаст удобный с максимальными возможностями инструмент тот и будет завоевывать клиентов. Ты просто отстал от времени. Например я сейчас на 7.7 программирую и получаю больше удовольствия из-за того что на 1С++ могу использовать всю мощь T-SQL.
Да и среды разработки постоянно совершенствуются. Если сравнить Visual Studio или IntelliJ IDEA.

А потребность в этом есть. Просто ты этого не видишь.
244 Serginio1
 
15.05.14
11:09
Опачки сейчас открыл 1С:Предприятие 8.3 (8.3.5.823)
а там рефакторинг то уже есть. Например "Выделить в ассинхронную процедуру". Так что до совмещения клиентского и серверного кода недалеко
245 Serginio1
 
15.05.14
11:14
Блин прорустил http://v8.1c.ru/o7/201312ref/index.htm
246 quest
 
15.05.14
12:22
(242) в (207) ясно сказано "Смысл замыкании как раз в рефакторинге", так что отчеты в пролете.
(243) Да. я отстал. моя среда разработки для не 1С - емакс. и необходимости в ее модификации я не вижу. Вполне нормально работает и для С++ и для лиспа.
(244) Круть. Значит до замыканий осталось полшага - основное то сделано уже. чисто косметические вещи остались - переписать платформу и переобучить армию программистов.

В общем, это мое последнее  сообщение в этой ветке. Смысла продолжать нет. Мы действительно говорим о разных вещах разным языком.

Не нужно
247 Asmody
 
15.05.14
12:24
[Смысл замыкании как раз в рефакторинге] — чо?!
248 quest
 
15.05.14
12:31
мопед не мой, он из 207 сообщения в этой ветке
249 KuzEv
 
15.05.14
12:33
После апдейта на 8.3.4.482 код, указанный у топик-стартера, отправляет платформу в дамп по таймауту, т.е. если не отвечать на вопрос в течение минуты.
250 Serginio1
 
15.05.14
12:35
(246) Ты посмотри на 245. Выделение на каждый модальный вызов отдельную процедуру еще то удовольствие.
Можно просто поместить ассинхронный код внутри например метода
АссинхронныйВызов(
ВыбранноеЗначение=ВыбратьИзМеню(СписокВыБора,Элементы.КомандаМеню);
Ф=154;
)

(248) Для выделения серверного кода или ассинхронного достаточно рефакторинга, который генерит методы при компиляции этакий аналог макроса который активно используется например в Немерле.
251 Serginio1
 
15.05.14
12:39
(247) На самом деле сначала анализируется захватываемый контекст и в итоге генерится новый код при компиляции.
Например если используются переменные то создается  класс с этими переменными доступ которым осуществляется как из вызывающей процедуры так и замыкания. Реализации могут быть различными.
252 Анцеранана
 
15.05.14
12:40
Слишком сложный руский синтаксис для простого парня из маленькой северо-мадагаскарской деревушки. Точки , стрелочки, скобочки (( Придумай проще!

Не нужно
253 Serginio1
 
15.05.14
12:43
254 Serginio1
 
15.05.14
12:44
(250) Чем для тебя 250 сложен?
255 Serginio1
 
15.05.14
15:08
в C# для упрощения работы с ассинронностью  ввели
async и await http://habrahabr.ru/post/162353/
256 dmpl
 
16.05.14
08:37
(168) Чтобы не писать портянку - любая коллекция КлючИЗначение к вашим услугам.

(179) Да нет никакой проблемы. Разработчикам платформы это просто не нужно. Ведь этого никто кроме обслуги не увидит. А вот внешние плюшки - очень даже нужны, заказчика впечатлить.
257 dmpl
 
16.05.14
08:44
(212) Заметь, насколько проще ошибиться в таком коде, если подумаешь, например, что x1 уже давно не используется, и используешь для своих целей.
258 dmpl
 
16.05.14
08:51
(243) Клиентов заработает тот, кто создаст хороший конечный продукт. Как он сделан внутри - 99,9% клиентов не интересует вообще.

(244) Осталось все это дело отладить :)

(250) АССинхронный - это от слова ASS? Т.е. по-русски - через-задницу-в-будущее?
259 ERWINS
 
16.05.14
23:36
Ассинхронное программирование это тренд.
А замыкания там в тему.
260 dmpl
 
17.05.14
10:09
(259) Вот блин, даже как название правильно пишется не знаете, а все туда же... аСинхронное оно. А ассинхронное - это через задницу получается.
261 Serginio1
 
17.05.14
10:24
(260) Прошу прощение за неправильное написание. Но вот то, что тренд существует это факт. При этом async и await значительно сложнее чем
АссинхронныйВызов(
ВыбранноеЗначение=ВыбратьИзМеню(СписокВыБора,Элементы.КомандаМеню);
Ф=154;
)  

см 255
Главное, что бы упростить код, а через что это будет сделано глубоко наплевать.
250 легко делается через рефакторин во время компиляции кода в промежуточный код (AST дерево wiki:%C0%E1%F1%F2%F0%E0%EA%F2%ED%EE%E5_%F1%E8%ED%F2%E0%EA%F1%E8%F7%E5%F1%EA%EE%E5_%E4%E5%F0%E5%E2%EE) или трехадресный код wiki:%CA%EE%E4%EE%E3%E5%ED%E5%F0%E0%F6%E8%FF
262 Serginio1
 
17.05.14
10:49
Ну и можно посмотреть на байт код в 1С http://kb.mista.ru/article.php?id=519
263 quest
 
18.05.14
15:51
" делается через рефакторин во время компиляции кода" - а как рефакторинг (изменение текста! программы) можно сделать в момент анализа AST? и как этому помогут замыкания?
264 Serginio1
 
18.05.14
20:35
(263) Посмотри  http://v8.1c.ru/o7/201312ref/index.htm

Там как таковые замыкания и не нужны. Просто генерация года во время компиляции. Это же касается и серверного кода внутри клиентского.
265 Serginio1
 
18.05.14
20:49
Вернее так скажем нет явного использования замыканий.
Посмотри на async и await http://habrahabr.ru/post/162353/
266 quest
 
19.05.14
12:25
Вот зарекался я суда писать. Но блин нельзя же так в одну кучу сваливать все вместе. Возьми ты книжку любую - как минимум sicp - и прочитай что такое замыкание. Затем прочитай у Фаулера что такое рефакторинг. И попытайся найти хоть одно сходство.
А то все вместе - и асинхронность, и замыкания, и рефакторинг, и видимо скоро китайский язык потребуется (ибо тренд от которого нельзя отмахнуться)

Насчет посмотри туда или сюда - все что ты пытаешься показать - не изобретения Майкрософта, использовалось это все еще в 90 году и нормально работало в лиспе, начиная с 2003 - перекочевало в ракету где стало еще лучше работать.

В общем не все вокруг гвозди. И читай не только вику
267 Serginio1
 
19.05.14
12:45
(266) Ты мне только на один вопрос ответь, что тебе не нравится код в 261 и 171. Чем для тебя плох Linq, await.
Почему лисп несмотря на его мощность не получил такого распространения чем тот же C#.
268 quest
 
19.05.14
13:48
По пунктам - почему не понравился? - код не баба. его задача работать, а не нравиться. Но конкретно по куску

АссинхронныйВызов(
ВыбранноеЗначение=ВыбратьИзМеню(СписокВыБора,Элементы.КомандаМеню);
Ф=154;
)  

тут у тебя мешаются 2 подхода к написанию, которые сложно читать.
Убери осмысленные имена и ты получишь
ф(х=у(й)) что приводит к увеличению времени чтения кода
Код должен быть однородным и не напрягать при чтении.
Хреновый сахар короче ты предлагаешь. Как было бы лучше? Не знаю.
Чем плох linq и прочий модный набор слов? Да ничем. Как впрочем ничем и не хорош. а если впихивать его вневпиху*мое - так даже вреден.
Почему лисп не получил распространения? Не знаю. Наверное потому что детям чернобыля было проще прочитать книжку "Освой программирование на C# за 21 день" чем htdp, paip или sicp. Да того же Страуструппа не читали. Как логичный результат подобного обучения - рефакторинг не сделать без асихроности и замыканий.
269 iamnub
 
19.05.14
13:54
(268)
Сегодня ты рефакторинг без замыканий делаешь, а завтра?!

А завтра ты запросы в цикле крутить будешь!
270 quest
 
19.05.14
14:03
(269) :) ты сделал мой день!
271 iamnub
 
19.05.14
14:14
(270)
;)
272 Serginio1
 
19.05.14
14:33
(268) То есть по твоему вместо 268 вот это легче читается?

ПоказатьВыборИзМеню(Новый ПоказатьВыборИзМеню("КомандаМенюЗавершение",ЭтотОбъект),СписокВыбора,Элементы.КомандаМеню);


Процедура КомандаМенюЗавершение(результат,ДополнительныеПараметры) Экспорт
ф=154
КонецПроцедуры

(269) Еще раз посморти на await и все, что за ним стоит.
Народ тоже раньше писал BeginXXX EndXXX. Не было анонимных делегатов и замыканий. Как только все это появилось народ с большим удовольствием начал писать по новому.
По поводу LINQ то там ты можешь писать запросы и в цикле, которые в итоге будут разворачиваться в один запрос.


Тогда у меня нет вопросов. Наверное у тебя просто потребность писать лишний код, который к тому же еще и хуже читается.
273 quest
 
20.05.14
14:10
Да, проще читается.
Народ до сих пор такое пишет на С++ и ничего, не пишут гневные письма в комитет по стандартизации. Странная ситуация, не находишь?

Приведи пример когда запрос в цикле будет разобран в один запрос.

Вот здесь - v8: Мощь LINQ-а, или 1С и  не снилось. написан простой запросик. Измени его так что бы бегая по массиву слов он отобрал все первые большие буквы при условии что  массив обходиться циклом. Как они в итоге развернутся?

На вкус и цвет как говориться. Но ради эксперимента покажи свой код 100 коллегам и попроси охарактеризовать его.
274 Serginio1
 
20.05.14
16:19
(273) Ну там в цикле можно условия задавать.
v8: Мощь LINQ-а, или 1С и  не снилось.
там запрос состоит из двух запросов
275 Serginio1
 
20.05.14
16:24
(273) Ну мои коллеги с удовольствием используют await
А конструкция из 261 На C# будет такой
выбзнач = await ВыбранноеЗначение=ВыбратьИзМенюAsync(СписокВыБора,Элементы.КомандаМеню);
// Код который ниже будет выполняться после того как выполнится выбор
// При этом не будет блокировки основного потока
Если выбранноеЗначение<>неопределено Тогда
Ф=154;
КонецЕсли;

Ну а сишникам я сочувствую. Особенно когда они мучаются с IDispatch  и прочим