• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы tanat
  • Дата начала
T

tanat

При решении ряда задач, поставленных руководством, использовал этот оператор. Недавно общался с коллегой, который заверил меня в том, что такой оператор используют "дубы"). На вопрос "почему" ответа развернутого не получил.

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

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

vitfil

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

Zab

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

tanat

Главным козырем в его аргуметах является, как уже подметили, отсутствие проверки исполняемого кода. Например. пользователь програмно может удалить ряд данных.

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

Лично я вообще не представляю, как программу заставить "плясать под мою дудку" без этого оператора без конфигуратора. Как и коллега, впринципе).
 
V

vbs

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

vitfil

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

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

vbs

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

vitfil

В Алголе-60 и в ПЛ/1
Не приходилось охотиться на этих зверей, но я таки вспомнил, где присутствуют конструкции do ... while: PHP и Java.
И признаю, что ошибался на счет того, что их убрали из стандартов.
 
K

KiR

а назве в С++ do...while не было? что-то уже плохо помняться студенческие годы)))
 
H

Hryv

KiR, я то тебя понял, просто уточнил для всех
 
K

KiR

Тоже склероз, но на сей раз в раннем проявлении
выпито было много наверное!))))
но ведь не забыл таки, правильно написал)
приписку на всяк случай сделал чтобы вслучае если это таки неверно сослатся на склероз))
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!