Goto opener что это за программа

990x.top

Простой компьютерный блог для души)

GoToMeeting что это за программа и нужна ли она?

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программаВсем привет. GoToMeeting это что еще такое, что за прога? Будем разбираться! Значит начал копаться в интернете и сразу наткнулся на инфу, что вообще GoToMeeting это типа сервис, созданный компанией Citrix Online. И вот сама прога нужна для проведения каких-то конференций, также можно просматривать удаленный рабочий стол, можно и общаться через эту прогу..

Оказывается что есть приложение и для Андроида! То есть короче, как я понимаю, то GoToMeeting это прога для создания или участия в онлайн конференциях через интернет. То есть как бэ типа Скайпа что ли.. ну просто похоже Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

Итак ребята, вот основные возможности приложения GoToMeeting для Андроида (думаю что версия для ПК имеет все почти тоже самое):

Короче, честно говоря ребята какая-то муть… Да и еще платная, вообще жесть. Нет, ну может это и стоящая прога, но нам простым юзерам она уж точно не нужна, правильно? Онлайн общение через интернет, ну что тут может быть лучше чем Скайп или Вайбер? Думаю что вы со мной согласитесь.

Еще узнал что в GoToMeeting нет русского языка, это незачет.

Хотя с другой стороны вот читаю что GoToMeeting это один из самых популярных сервисов для проведения видеозвонков, онлайн презентаций, вебинаров.. Ну не знаю что сказать. Возможно дела обстоят так, если нужно тупо общение, то тут Скайп без вариантов. Если нужно провести презентацию там по работе, бизнесу, то тут может и стоит посмотреть в сторону GoToMeeting, если оно уже так сильно популярное…

Вот была выпущена версия GoToMeeting Free в 2014-ом году, она позволяет в бесплатном режиме создавать конференции, на которых могут быть до трех участников. Все работает очень просто и само приложение вроде как создано на базе Хрома (это имею ввиду вариант для ПК) и там стоит нажать кнопку Начать встречу и потом будет предоставлена вам ссылка, эту ссылку можете отправлять своим друзьям или коллегам…

Кстати, вот читаю новость от 2011-го года. Пишется что Скайп будет предоставлять конференции с помощью GoToMeeting, хм, интересно, как дела обстоят сейчас Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

Так, сделаем мини вывод. GoToMeeting это программа при помощи которой можно проводить конференции. Разумеется что у всех участником прога должна быть установлена, ну чтобы можно было вообще стать участником конференции. GoToMeeting направлено на бизнес-пользователей, бесплатная версия ограничена сильно. Через GoToMeeting можно также общаться как и через Скайп, однако про удобство сказать ничего не могу, думаю Скайп все таки будет удобнее. Есть версия GoToMeeting как для винды так и для Андроида. О, есть еще и версия для Мака, вообще ништяк!

Так, теперь мне стало интересно как выглядит прога, поискал я значит картинки… Вот нашел картинку, не особо правда понимаю что именно изображено:

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

Ну как я понимаю это просмотр удаленного рабочего стола, вижу что есть чат.. И все это работает в Windows XP, может и версия GoToMeeting тут старовата..

Ну а вот прога запущена уже в Windows 7:

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

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

Вот еще картинка, короче смотрите, это вроде версия на ПК, и тут есть участники и что-то им рассказывается, есть еще инфографика, в общем деловая конференция типа (за качество извините):

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

Вот еще картинка, тут уже хорошо видно что из себя представляет GoToMeeting, однако что это за операционка я понять не могу (может это Мак):

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

Ну это уже точно Мак:

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

Короче GoToMeeting это чисто рабочий инструмент, ну то есть для работы, а не для обычного общения, мое мнение такое Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

Ну а вот примерно так выглядит приложение на Андроиде, смотрите:

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

Не знаю что на этой картинке, но думаю вам стоит взглянуть:

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

Хм, вот еще одна интересная картинка:

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

Ну и еще одна картинка, уже последняя на сегодня:

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

На этом все ребята, надеюсь инфа пошла на пользу! Удачи вам!

Источник

GOTO в прикладном программировании

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа
Картинка из книги Thinking Forth

Мотивы для использования GOTO и альтернативы ему принципиально отличаются для системного и прикладного программирования — это является и важной причиной холиваров. Для прояснения ситуации рассмотрим GOTO только в разрезе прикладного программирования.

Основной тезис: в прикладном программировании GOTO однозначно лучше обходить.

GOTO — свойства и влияние на качество кода

Параметры качества кода
Общие свойства GOTO:
Что не является GOTO:

Особенности GOTO в прикладном программировании

Прикладное программирование здесь — программирование на языках высокого уровня, поддерживающих структурирование кода, в том числе структурный подход к обработке исключений: Java, C#, C++, интерпретируемые языки и т.п. — в общем, стандартный прикладной мэйнстрим. C не рассматриваю как низкоуровневый язык, используемый сейчас в основном для системного программирования.

Особенности прикладного программирования:
GOTO только ухудшает сопровождаемость кода

В системном программировании важна максимальная экономия ресурсов, поэтому там, возможно, применение GOTO для этой цели оправдано.
А в прикладном программировании параметр «потребление ресурсов» можно отбросить, остается только параметр сопровождаемости, который GOTO ухудшает.

GOTO — проблемы и варианты исправлений

Рассмотрим применение GOTO в различных вариантах перемещения по структуре кода и альтернативы ему:

1. Вход в блок извне:
1.1 Вход в «не цикл»:

легко и очевидно переписывается без GOTO:

1.2 Вход в цикл:

нельзя: вообще непонятен поток выполнения:

2. Переход внутри одного блока:

нет необходимости, легко переписывается, обычно на if/else:

3. Выход из блока наружу

Это основной случай возможного применения GOTO. Разобьем его на еще более мелкие и рассмотрим подробно на примерах.
Общий подход — максимально декомпозируем: разбиваем на методы по смыслу, логику фиксируем в флагах с говорящими названиями — получаем читабельный и самодокументированный код.

Важные правила:

1) исключения всегда используем для обработки ошибок и внештатных ситуаций, поэтому не используем их для чего-либо еще, чтобы не мозолить глаз;

2) можем случайно «проглотить» исключение с внутреннего уровня вложенности;

3.1. Единственный выход из одного уровня вложенности:

тривиально заменяется if/break и т.п.

3.2. Несколько выходов из одного уровня вложенности:
3.2.1 Обработка ошибок — только через исключения

(надеюсь, это очевидно; если нет — могу объяснить в отдельной статье)

3.2.2 Перебор вариантов — на примере if:

Проблемы (кроме всегда присущей GOTO неочевидности потока выполнения):
захотели добавить поведение sleep в случаях wannaEat и wannaDance — все, обобшение для wannaEat и wannaDrink разрушено.

Как сделать красиво (сразу расширенный вариант):

3.3. Выход из нескольких уровней вложенности.
3.3.1 Если легко выделить разную логику (разные ответственности):
3.3.2 Сложнее выделить разную логику или при этом усложняется код.

Как правило, это может быть в случае однотипных вложенных циклов:

Это — единственный вариант, который смотрится хуже, чем GOTO, и GOTO даже понятнее. Но практически всегда есть и другие варианты.

Для оставшегося исчезающе малого процента случаев, когда других вариантов нет, нужно просто решить, что все равно можно сделать хотя бы флагами, зато гайдлайны будут проще — «Без GOTO!».

Резюме:

Важнее всего — сопровождаемость.

GOTO всегда ухудшает сопровождаемость, поэтому

Источник

Удалённая работа. Распределённые команды: обзор сервисов для эффективных бизнес-коммуникаций

По данным социологических исследований, удалённая работа в последние годы находится «на подъёме». Однако на рынке происходит нечто более глубокое, чем простое увеличение численности удалённых сотрудников. Мы становимся свидетелями возникновения принципиально новой распределённой схемы работы, практически – виртуальной компании. Эта схема явно отличается от традиционной удалённой работы, где люди могут работать вне офиса лишь какое-то время.

Возникновение распределённых компаний влечёт за собой принципиально другую схему деятельности, новую стратегию, нацеленную на полное распределение – ввиду связанных с этим преимуществ. А их немало: возможность пригласить талантливых профи из любой точки мира, баланс между работой и отдыхом, снижение затрат и т. д.

Уже давно для организации коммуникации между сотрудниками придумано множество сервисов. Но, как ни странно, почти каждому в них чего-то недостаёт. Предлагаем собрать вместе популярные сервисы, узнать, чего в них не хватает, а может, уже есть кто-то, приближающийся к идеалу?

Системы для корпоративного и частного общения (устного, письменного и с видео) развивались постепенно и в нескольких разных направлениях. Так для работы с общими списками задач и самими задачами были придуманы разнообразные таск-менеджеры и инструменты совместного редактирования.

Конкурируя возможностями со Skype, были написаны и запущены разнообразные сервисы видеоконференций. Для работы над проектами были созданы чат-румы, а для текстового общения пользователей — мессенджеры. Все эти сервисы развивались и получали всё больше и больше функций, абонентов, денег, стикеров и смайликов. И даже нельзя сказать, что слабые и нежизнеспособные сбрасывались со счетов и выживали крутейшие. Это вам не Спарта, выживали все и все находили свою аудиторию, а некоторые — свой континент или свою страну (как ooVoo в Бразилии) почитателей.

Мы попросили провести анализ рынка специалиста, который по роду своей деятельности активно и часто работал с приложениями для удалённой работы. Он выбрал следующие сервисы для сравнения: SOCOCO, GoToMeeting, Cisco Webex, Skype для бизнеса, Битрикс 24, ooVoo, Slack, Google Hangouts, Join.me.

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

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

GoToMeeting — это один из первых веб-сервисов для видеоконференций и удаленного управления компьютерами. Он создан компанией Citrix Online, являющейся подразделением корпорации Citrix Systems, и позволяет пользователям общаться с другими людьми через интернет в режиме реального времени.

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

Возможности:

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

Сервис Cisco Webex подойдёт для обучения и проведения мозговых штурмов при решении сложных проблем в рамках каких-либо проектов. Для представления новых продуктов, включая и программные решения любой сложности, для поддержки пользователей, находящихся на удалении от специалистов обслуживания. Используя возможность сервиса вебинаров Cisco Webex записывать всё, что происходит во время конференции, можно создавать полноценные обучающие видеоролики, а также вести протокол собрания. И да, Webex дорогой, как всё, что имеет отношение к Cisco.

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

«Skype для бизнеса» это ребрендинг сервиса Microsoft Lync. С помощью этого сервиса можно упростить инфраструктуру компании, развернув единую платформу для звонков, конференций, обмена видео и другой информацией. В новой программе сохранились все возможности для коммуникаций, совместной работы и обеспечения безопасности, а также инструменты для администрирования.

Из «Skype для бизнеса» можно совершать голосовые звонки как на клиент, так и на обычный телефон, а также устанавливать видеосвязь. Кроме того есть возможности для организации онлайн-конференций с возможностью одновременного участия до 250 пользователей.

Возможности:

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

Вся коммуникационная часть портала Битрикс 24 доступна в бесплатном варианте для неограниченного количества пользователей, однако в этом режиме доступны не все функции и на работу команды выделяется всего 5 Гб места в облаке.

Возможности:

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

ooVoo — публичный сервис и программа-клиент для организации видеоконференций и мгновенного обмена сообщениями в Интернете. Основной упор в программе сделан на видео общение, а к чату можно одновременно подключить до 12 человек. В общей конференции можно отправлять файлы или включить для воспроизведения стороннее видео для всеобщего обзора.

К конференциями можно приглашать по ссылке и общаться прямо из браузера. Также можно записать видео-послание и текстовые сообщения, которое абонент сможет получить в удобное для себя время. Очень мимишный интерфейс — видно, не случайно ooVoo любят в Бразилии, ассоциация с карнавалом не выходит из головы. Но, справедливости ради надо сказать, что летом 2011 года именно сервисы ooVoo и Skype были разрешены к использованию в работе членам Палаты представителей Конгресса США.

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

Slack — это онлайн-сервис для ведения переписки внутри команды и большой компании, корпоративный мессенджер. Этот сервис отличается возможностью тесной интеграции активных диалогов с другими приложениями, именно поэтому я решил включить его в своей обзор. Такой принцип позволяет вести мониторинг прогресса работы над различными проектами при помощи одного интерфейса и убрать лишнюю информацию. По меркам ИТ-мира, сервис ещё молодой (запущен в тестовом режиме в 2013 году), но очевидно, что он полон сил и желания развиваться. Чего стоит абсолютно безумное количество интеграций! Кстати, и SOCOCO его не обошёл вниманием — интеграция уже готова.

Возможности:

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

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

Возможности:

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

Google Hangouts — это программное обеспечение для мгновенного обмена сообщениями и видеоконференций, разработанное компанией Google и выпущенное 15 мая 2013 года во время конференции разработчиков Google I/O. Приложение использует протокол XMPP. Кстати, именно Hangouts послужил центром нескольких комичных сцен промо-ролика Google отличного фильма «Кадры» (THE INTERNSHIP). Эх, ты неотразим даже на экране ноутбука, когда ты Винс Вон. Впрочем, вернёмся к сервису.

Возможности:

Источник

Fast, reliable, and secure video conferencing

Powering collaboration and productivity

With work to be done anywhere, at any time, on any device, your organization needs a virtual meeting platform built for better business.

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

Collaborate quickly and securely

Built for business means virtual meetings are even easier with no downloads necessary.

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

Unmatched on mobile

A simple, easy and reliable virtual meeting experience from the highest-rated mobile app in the iOS and Android stores.

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

One vendor for every solution

LogMeIn offers tools for communication & collaboration, engagement & support and identity & access, all under one roof.

Protect your workforce

80+ million annual online meetings. Each and every one with the same state-of-the-art security.

A tool you can bank on

Backed by an industry leading 99.95% service uptime, GoToMeeting was designed for dependability.

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа

Built for business

GoToMeeting helps businesses thrive with secure online meetings and the industry’s best audio and video quality.

Check out our always growing list of features

GoToMeeting’s online meeting software comes fully loaded with features so your business can deliver the best web conferencing experience.

Источник

Запретный плод GOTO сладок!

Небольшой исторический экскурс

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

А все начиналось с комбинационных схем

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа
Вначале было слово – и слово это было функция. Не так уж и важно, что это была булева функция от логической переменной – потом в этом базисе умудрились реализовать всю (почти) математику, а потом и тексты, графику… Как бы то ни было, оказалось, что с помощью вычислительной техники очень удобно делать арифметические, а потом тригонометрические и прочие действия и находить значения функций от переменной.

Другими словами, Вам нужно было сделать устройство, которое по значению переменной (переменных) находило значение функции.

Для решения этой сложнейшей задачи строился последовательный алгоритм для выполнения арифметических операций (в случае заданной точности вычислений в таком алгоритме каждое арифметическое действие можно выполнять за один такт).

Имея алгоритм, несложно построить комбинационную схему – схему, которая мгновенно (с точностью до срабатывания логических устройств и времени распространения сигналов) на выходе давала ответ.
Вопрос – тут нужны какие-нибудь переходы? Нет, их тут просто-напросто нет. Есть последовательное течение действий. Все эти действия можно реализовать в конечном счете за один такт (не спорю, это будет очень и очень громоздко, но задавшись разрядностью всех данных, такую схему Вам построит любой студент – и тем более синтезатор для VHDL или Verilog).

Но потом вмешались схемы с памятью

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа
А потом чья-то умная голова додумалась до схемы с обратной связью – например, RS-триггер. И тогда появилось состояние схемы. А состояние – это ни что иное, как текущее значение всех элементов с памятью.

Появление таких элементов памяти позволило сделать революционный скачок вперед от жестко заданных устройств к микропрограммным автоматам. Упрощенно говоря, в микропрограммных автоматах есть память команд. Есть отдельное устройство, которое реализует текущую микропрограмму (сложение, вычитание или еще чего). А вот выбором «текущей» микропрограммы занимается отдельное устройство – пусть это будет «устройство выборки».

Вопрос – тут есть какие-нибудь переходы? Однозначно да! Более того, появляются переходы безусловные (адрес следующей команды не зависит от текущего состояния данных) и условные (адрес следующей команды зависит от состояния данных).

Можно ли без них обойтись? Да никак! Если не использовать переходы, то мы вернемся к комбинационной схеме без памяти.

В итоге мы пришли к ассемблеру

Апофеозом таких вычислительных устройств стали микро-, просто- и супер-компьютеры. Все они в основе имеют язык кодов, достаточно легко преобразуемый в Ассемблер с приблизительно совпадающим набором команд. Возьмем самый массовый персональный компьютер с Ассемблером от i386 процессора – благо, Windows XP написан для него. Как у него построена работа?

В данном процессоре память данных и команд общая, идентифицируется адресом. Команды не имеют фиксированную длину. Если не используется команда перехода, то следующей командой выполняется команда, расположенная сразу за текущей.

Какой итог можно подвести? На уровне микропроцессора операции перехода используются очень активно. Реальную программу, их не использующую, написать почти невозможно (может быть, ее можно сделать, но это будет супер-мега-извращение и точно уж не реальная программа!). С этим тоже спорить никто не будет.

Но почему же тогда в языках более высокого уровня – сконцентрируемся на С/С++ — оператор goto вдруг впал в немилость.

Немного об алгоритмах

Goto opener что это за программа. Смотреть фото Goto opener что это за программа. Смотреть картинку Goto opener что это за программа. Картинка про Goto opener что это за программа. Фото Goto opener что это за программа
А теперь посмотрим на хитровывернутый алгоритм. Представление не имею что это за бред – но его надо реализовать.

UPD: здесь A, B, C, D, E — это некоторые операции, а не вызов функции! Вполне возможно, что они используют массу локальных переменных. И вполне возможно, что они меняют их состояние. Т. е. в данном случае речь не идет о вызове функций — некоторые действия, не будем детализировать.

Вот как это выглядит в С с goto:

Очень лаконично и читабельно. Но — нельзя! Попробуем без goto:

Вы что-нибудь поняли из логики работы второго листинга.
Сравним оба листинга:

Но зато во втором листинге нет goto!

Ну да ладно, в жизни такие алгоритмы почти не встречаются. Лучше поговорим о жизни.

goto в реальных программах

Я за свой более чем 20-летний стаж прошел несколько аппаратных платформ и с десяток языков программирования, участвовал в написании крупного программного продукта ActiveHDL, делал коммерческую базу данных и много небольших программ для отладки оборудования, используемого в Олимпийских играх, а также делал устройства для этой самой Олимпиады (уже несколько Олимпиад, если быть точным). Короче, что-то я в программировании шарю. А, да, забыл – я закончил с почетным дипломом ХНУРЭ — то бишь, в теории я тоже секу.

Поэтому мои последующие размышления и ситуации… скажем так, я имею моральное право на них.

Неявное использование goto

В языке С есть много операторов, которые на самом деле являются банальным goto – условным или безусловным. Это все виды циклов for (…), while (…) <…>, do <…>while (…). Это анализ числовых переменных switch (…) . Это те же операторы прерывания/перехода в циклах break и continue. В конце концов, Это вызовы функций funct() и выход из них return.

С++ добавляет массу невидимых переходов перегрузками, конструкторами и деструкторами. Из явных переходов – try <… throw …>catch (…) <…>.

Эти goto считаются «легальными» — чем же нелегален сам goto?

В чем обвиняют goto

Обвиняют его в том, что код становится нечитабельным, плохо оптимизируемым и могут появиться ошибки. Это про практические минусы. А теоретические – это просто плохо и неграмотно, и все тут!

Насчет нечитабельности кода и плохой оптимизируемости – еще раз взгляните на листинги выше.
Насчет вероятности появления ошибок – согласен, такой код воспринимается несколько сложнее из-за того, что мы привыкли читать листинг сверху вниз. Но и все! А что, другие средства С++ безопасные и не могут создать ошибок в коде? Приведу краткий список самых опасных вещей С++ («опасные» в том смысле, что с их помощью можно создать массу трудноуловимых ошибок): преобразования типов, перегрузка операторов, указатели и динамическое распределение памяти, наследование классов, шаблоны… Кажется, я перечислил почти все достоинства С++… А, ну да, полиморфизм не назвал – он у меня проходит под «перегрузкой операторов».

Тоже самое и goto. Пользоваться им надо с умом – и тогда код будет работать корректно.

А про теоретические доводы – это, уж простите меня, спор о вкусах. Вы пользуетесь Венгерской нотацией? Я – нет, терпеть ее не могу! Но я ж не говорю, что она плохая из-за этого! Лично я считаю, что переменная должна нести смысловую нагрузку – для чего она создана. Но я не буду запрещать пользоваться этим способом именования другим людям!

Или же есть эстеты, которые считают, что писать a = ++i неграмотно, надо писать i = i + 1; a = i. И что теперь, запретить и это тоже?

Впрочем, есть в C++ ньюанс, где goto приводит к проблемам:

Чему будет равно p? А компилятор его знает! Впрочем, хороший компилятор такого не допустит – или допустит в том случае, если это p нигде не используется.

В то же время выход из цикла вызывает необходимые деструкторы – проверено в Visual Studio 2008.
Что на это скажешь? А то, что не-использование goto не застрахует Вас от неправильно написанной программы. Так же и применение его не гарантирует, что программа будет сыпаться. Нужно писать программы с умом и не делать таких элементарных глюков.

Обработка ошибок

В С++ по сравнению с С появилась замечательная возможность try … throw … catch. Она позволяет эффективно обрабатывать ошибки и прочие сложные ветвления. В С++ — да, но не в С. В С приходится в таком случае использовать goto. Разумеется, можно использовать всяческие флаги и прочее. Но этот вопрос мы уже обсудили – код раздувается, появляются источники новых ошибок, листинг становится нечитабельным.

Это как раз тот самый случай при программировании микроконтроллеров, где я активно использую goto. Это мне позволило не попадать в «зависания» в случае проблем с внешними устройствами, UART, USB и т. п.

Выход из вложенного цикла наружу

Посмотрите на программу ниже:

Что происходит – понятно? Есть вложенный цикл. Если наступило какое-то условие – покидаем все последующие обработки.

Данный код с флагами выглядит иначе:

Что произошло в данном случае? На каждой итерации мы теперь проверяем флаг. Не забываем его проверять и дальше. Это мелочи, если итераций немного и речь идет о «безразмерной» памяти у PC. А когда программа написана для микроконтроллера – это все уже становится существенно.

Кстати, в связи с этим в некоторых языках (если не ошибаюсь, в Java) есть возможность выйти из цикла по метке вида break Leave. Тот же goto, между прочим!

Точно такой же пример я могу привести и с обработкой в switch (…) < case …>. С этим я сталкиваюсь часто при обработке входящих пакетов неодинаковой структуры.

UPD: как мне справедливо подсказали, в данном случае это проблема для С, а не С++. В С++ можно «выскользнуть» наружу с помощью throw… catch…. Но мы помним, что throw… catch… — тот же самый goto!

Автоматическое создание кода

Знакомы ли Вы с автоматным программированием? Или любым другим автоматизированным созданием кода? Скажем, создатели лексических обработчиков (без использования громоздкого boost::spirit). Все эти программы создают код, который можно использовать как «черный ящик» — Вам не важно, что там внутри; Вам важно, что он делает. А внутри там goto используется очень и очень часто…

Кстати, признаком хорошей программы на С++ является создание интерфейсов, которые работают в четко заданных условиях. И Вам знать не надо что там внутри. А, может, там тоже масса goto. Это уже проблема создателя такого класса – придумать, отладить и составить спецификацию. И в рамках этой спецификации заставить его работать стабильно. А внутренности – они не для посторонних.

Выход в одном месте

На С иногда приходится писать что-то вроде:

Этот код гораздо аккуратней будет выглядеть так:

Идея понятна? Иногда надо при выходе что-то сделать. Иногда много чего надо сделать. И тогда тут здорово помогает goto. Такие примеры у меня тоже имеются.
Вроде бы все перечислил, теперь можно подвести…

Это моя точка зрения! И она справедлива для меня. Может – и для Вас, но я не буду Вас заставлять ей следовать!

Так вот, для меня очевидно, что goto помогает оптимальней и качественней решить некоторые проблемы.
А бывает и наоборот – goto может породить массу проблем.

UPD: Начитавшись гору комментариев, я для себя выделил положительные стороны использования goto и отрицательные.

Кто еще подскажет плюсы/минусы? Впишу, если они будут оправданы.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *