Одно из преимуществ, которое для меня было принципиальным: Visual Basic намного терпимей к косячным COM–объектам.
Там, где остальные умирали, он продолжал работать.
Для новичков порекомендую книгу Ганса Бергера «Автоматизация посредством STEP 7 с использованием STL
и SCL и программируемых контроллеров SIMATIC S7-300/400».
Она есть в стандартной поставке документации, очень подробно всё расписано, позволяет безболезненно начать разработку.
А меня давно не покидает ощущение, что конкатенативные и функциональные языки, это одного поля ягода.
Например, пусть есть две функции A: int int -> int и B: int ->string, то простая конкатенация A и B даст их композицию: AB: int int -> string.
Древовидные обсуждения появились ещё во время Usenet, стоит глянуть на то, как с удобным показом дерева комментариев справлялись тогда: The lost art of threaded discussions.
Мне кажется, что автор просто привлекает внимание к подходу/парадигме программирования, которую я называю автоматное программирование или программирование с явно выделенным состоянием. Плюсы мышления в подобном стиле велики, но не все знают о таких способах борьбы со сложностью, потому такие статьи надо приветствовать.
Этот подход может реализоваться разными способами: от банального switch до полноценного фреймворка — что лучше зависит от контекста.
Я не совсем понял вопрос, потому отвечу в рамках своего разумения:
у функции одно возвращаемое значение, оно именованное.
Когда пишем return 1; компилятор догадывается, что мы возвращаем именованный возврат в i;
И при выходе из функции значение с именем i равно 1;
Роб Пайк недолюбливает эту идиому как раз из-за того, что наличие управляющей структуры try/catch/finally приводит к злоупотреблению исключениями и смешению с ошибками.
Поэтому чтобы уменьшить это злоупотребление повышена гранулярность: с блока до функции.
На мой взгляд у re2c ниша немного другая — написание ad hoc лексеров, когда не требуется полная мощь лексеров и парсеров типа flex, bison, peg.
Сейчас, правда, эта ниша занята регулярными выражениями.
Edit.SwapAnchor, у меня она назначена на (Ctrl+E, A).
unix определена как 1
Там, где остальные умирали, он продолжал работать.
и SCL и программируемых контроллеров SIMATIC S7-300/400».
Она есть в стандартной поставке документации, очень подробно всё расписано, позволяет безболезненно начать разработку.
Мне она очень помогла в своё время.
Есть ещё аналог OPC на CORBA: DAIS.
Например, пусть есть две функции A: int int -> int и B: int ->string, то простая конкатенация A и B даст их композицию: AB: int int -> string.
Этот подход может реализоваться разными способами: от банального switch до полноценного фреймворка — что лучше зависит от контекста.
у функции одно возвращаемое значение, оно именованное.
Когда пишем return 1; компилятор догадывается, что мы возвращаем именованный возврат в i;
И при выходе из функции значение с именем i равно 1;
Поэтому чтобы уменьшить это злоупотребление повышена гранулярность: с блока до функции.
Сейчас, правда, эта ниша занята регулярными выражениями.