• Paranoid - курс по анонимности и безопасности в сети от команды codeby. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного. Подробнее ...

Выполнить(кусокКода)

tanat

Well-known member
02.03.2007
265
0
#1
При решении ряда задач, поставленных руководством, использовал этот оператор. Недавно общался с коллегой, который заверил меня в том, что такой оператор используют "дубы"). На вопрос "почему" ответа развернутого не получил.

Может Вы, уважаемые, подскажете, что плохого в этом операторе?

П.С:В моем случае куски исполняемого кода формируются програмно, не используя редакрирования пользователем.
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#2
Если ваш коллега не привел аргументов, можно вообще не обращать внимания на подобные заявления. Если аргументы есть, давайте их в студию - будем обсуждать.
 

Zab

Well-known member
07.08.2006
583
0
#3
Даже многострадальный Goto, считающийся якобы плохим тоном в программировании, можно применять к месту и с умом. И это главное. Нет плохих конструкций в языке, есть неправильное их применение.
Если колега приведет реализацию этого алгоритма без использования Выполнить() и алгоритм окажется хотябы таким-же по скорости/понятности/универсальности, можете с ним соглашаться.
Недостаток оператора в том, что синтакс-анализатор платформы не проверяет правильность выполняемого кода. "дубы" любят такие конструкции за то, что они помогают реализовывать функционал без знания более подходящих механизмов языка.
 

tanat

Well-known member
02.03.2007
265
0
#5
Главным козырем в его аргуметах является, как уже подметили, отсутствие проверки исполняемого кода. Например. пользователь програмно может удалить ряд данных.

В моем случае - такое не допускается, т.к. весь кусок кода заполняется програмно по определенным правилам. Однако, в дальнейшем планировалось использовать и возможность указания кода "вручную". Однако есть возможность загрузить код из файла ( пока от пользователей этот механизм закрыт) - и вот в этом случае, думаю, придется писать некий "переводчик", т.е. из указанного файла брать код, по определенным правилам и соответствиям составлять исполняемый код, а уже затем его, собственно, исполнять. Но пока конкретных реализаций нету - только в теории.
сли колега приведет реализацию этого алгоритма без использования Выполнить() и алгоритм окажется хотябы таким-же по скорости/понятности/универсальности, можете с ним соглашаться.
Лично я вообще не представляю, как программу заставить "плясать под мою дудку" без этого оператора без конфигуратора. Как и коллега, впринципе).
 

vbs

Well-known member
18.02.2007
1 708
1
#6
Хорошая программа - это, в первую очередь, работающая программа.
Во вторую - оптимальная по коду и быстродействию, в третью - красивая по написанию и интерфейсу и удобная в использовании.
Что касается Goto, в Паскале, помнится, есть замечательный сложный оператор, позволяющий сразу выбирать нужную веточку для перехода, что ж в нем плохого ?
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#7
в Паскале, помнится, есть замечательный сложный оператор, позволяющий сразу выбирать нужную веточку для перехода, что ж в нем плохого ?
Я бы не стал смешивать GoTo и Case.
В Case как раз видно, при каких условиях какой кусок кода будет выполнен. И программа достаточно читабельна получается. И, самое главное, не получится поставить метку перехода дважды (будешь удивлен, но не только интерпретаторы, некоторые компиляторы этого не отслеживают). Кроме этого, используя ГоТу, очень чревато получить зацикливание.
Хотя, у Case тоже есть свои нюансы... В некоторых компиляторах секция default выполняется только в том случае, когда не подошло ни одно условие, а в некоторых, выполняется всегда, после выполнения куска кода, подпадающего под условие. В этом случае приходится учитывать специфику компиляторов.

Кстати, если кто помнит...
Раньше кроме while ... do была еще конструкция do ... while
Вот только точно не помню в каком это было языке... В общем, если мне не изменяет склероз, ее даже убрали из ANSI, потому как приводила к "незапланированному" выполнению кода из-за невнимательности и усложнению процесса отладки.
 

vbs

Well-known member
18.02.2007
1 708
1
#8
Раньше кроме while ... do была еще конструкция do ... while
В Алголе-60 и в ПЛ/1 (если мне склероз не изменяет ;) )
А вообще-то при желании можно обойтись без любого оператора, если как следует постараться
Я бы не стал смешивать GoTo и Case.
А про это я, увы, уже забыл - последний код на Паскале в 1996м писал
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#10
а назве в С++ do...while не было? что-то уже плохо помняться студенческие годы)))
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#15
Тоже склероз, но на сей раз в раннем проявлении
выпито было много наверное!))))
но ведь не забыл таки, правильно написал)
приписку на всяк случай сделал чтобы вслучае если это таки неверно сослатся на склероз))