• ⚡️ Последний шанс: Вебинар по пентесту стартует через 30 минут!

    Друзья, ровно через 30 минут (8 июля в 19:00) начинается наш практический вебинар по пентесту и поиску уязвимостей!

    Если вы хотите:
    🕵️‍♀️ Узнать, как находить и эксплуатировать уязвимости в веб-приложениях.
    💡 Получить ценные инсайты от настоящего эксперта.
    🚀 Сделать решительный шаг в мир кибербезопасности.
    То этот вебинар для вас!

    Ведущий вебинара – Александр Медведев – эксперт с более чем 10-летним опытом в сфере информационной безопасности, пятикратный победитель Standoff и обладатель престижных сертификаций: OSWE, OSCP, PNPT, CEH, CWAPT.

    Успейте присоединиться! Зарегистрироваться сейчас

    Возникли сложности с регистрацией? Пишите нам: @Codeby_Academy
    Будем вас ждать!

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

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

tanat

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

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

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

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

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

Кстати, если кто помнит...
Раньше кроме while ... do была еще конструкция do ... while
Вот только точно не помню в каком это было языке... В общем, если мне не изменяет склероз, ее даже убрали из ANSI, потому как приводила к "незапланированному" выполнению кода из-за невнимательности и усложнению процесса отладки.
 
Раньше кроме while ... do была еще конструкция do ... while
В Алголе-60 и в ПЛ/1 (если мне склероз не изменяет ;) )
А вообще-то при желании можно обойтись без любого оператора, если как следует постараться
Я бы не стал смешивать GoTo и Case.
А про это я, увы, уже забыл - последний код на Паскале в 1996м писал
 
В Алголе-60 и в ПЛ/1
Не приходилось охотиться на этих зверей, но я таки вспомнил, где присутствуют конструкции do ... while: PHP и Java.
И признаю, что ошибался на счет того, что их убрали из стандартов.
 
а назве в С++ do...while не было? что-то уже плохо помняться студенческие годы)))
 
KiR, я то тебя понял, просто уточнил для всех
 
Тоже склероз, но на сей раз в раннем проявлении
выпито было много наверное!))))
но ведь не забыл таки, правильно написал)
приписку на всяк случай сделал чтобы вслучае если это таки неверно сослатся на склероз))
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы