Здравствуйте, T4r4sB, Вы писали:
X>> А как тогда реализовать спуск вниз через case'ы?
TB>Действительно, раз томсон и ричи реализовали этот спуск именно так, то это значит, что никаких иных способов в приниципе существовать не может и никто до иных способов никогда не смог бы додуматься
А кто говорит, что в принципе иных способов не может и никто до иных способов никогда не смог бы додуматься?
Здравствуйте, B0FEE664, Вы писали:
BFE>Здравствуйте, _hum_, Вы писали:
__>> если написано if(a > 0) then print("positive integer"), то даже человек, первый раз читающий эту конструкцию, догадается ...
BFE>что ось абсцисс направлена влево. BFE>И это вы называете естественным?
юмор оценил
а если уж дотошничать, то это алгебраическая запись, а не геометрическая — спросите у школьников, как записывается условие, число больше нуля, они вам скажут, что именно так, а не (0 < a) "нуль меньше числа"
Здравствуйте, xobotik, Вы писали:
X>Здравствуйте, _hum_, Вы писали:
__>>но в си оказалось, что эта конструкция закреплена за совсем другой семантикой. вот и высказываю свое удивление и недовольство
X>Вы скорее всего выразили отсутствие знаний в этом вопросе. То что Вы не знаете не является не очевидным.
X>Для меня человеческая семантика: X>
X>swicth(a) {
X> case 1: x = 1001; break;
X> case 2: x = 4002; break;
X>};
X>
речь шла о человечности семантики для случая без break
Здравствуйте, xobotik, Вы писали:
X>Здравствуйте, T4r4sB, Вы писали:
X>>> А как тогда реализовать спуск вниз через case'ы?
TB>>Действительно, раз томсон и ричи реализовали этот спуск именно так, то это значит, что никаких иных способов в приниципе существовать не может и никто до иных способов никогда не смог бы додуматься
X>А кто говорит, что в принципе иных способов не может и никто до иных способов никогда не смог бы додуматься?
Ну тогда я не понимаю смысла задавать такие вопросы, "а как иначе реализовать". Неужели сходу не придумать 100500 вариантов? Да как угодно, явным словом continue, явным словом goto metka, или ещё каким явным словом, очевидно же, что такой случай более редкий, и значит именно в этом более редком случае и надо заставлять писать какое-нибудь слово.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Здравствуйте, _hum_, Вы писали:
__>речь шла о человечности семантики для случая без break
Не в той ветке форума написали, в Философию программирования надо было
Вы как-то не правильно немного рассуждаете, берете свое субъективное мнение, проецируете на всех людей и убеждаете меня
в том, что ваша человеческая семантика, более человечная или исключительно человечная. Которая причем существует исключительно
в вашем воображении и реальных компиляторов поддерживающих "Вашу человеческую семантику" нет.
__>Всегда полагал, что семантика switch/case/case/... аналогична if/if/if/...
А зачем switch-у семантика как у if-ов если она уже есть у if-ов?
Я кстати хотя Duff's device'ом в реальной жизни не пользовался но такие строчки:
switch (var)
{
case VALUE1: DoSomethingFor1();
case VALUE2: DoSomethingFor1And2();
break;
case VALUE3: DoSomethingFor3();
default: DoSomethingFor3AndEverythingElse();
}
Пишу частенько.
Как много веселых ребят, и все делают велосипед...
Здравствуйте, T4r4sB, Вы писали:
TB>Ну тогда я не понимаю смысла задавать такие вопросы, "а как иначе реализовать". Неужели сходу не придумать 100500 вариантов? Да как угодно, явным словом continue, явным словом goto metka, или ещё каким явным словом, очевидно же, что такой случай более редкий, и значит именно в этом более редком случае и надо заставлять писать какое-нибудь слово.
100500 вариантов работающих вариантов, на реальном компиляторе? Или вы про абстрактный компилятор в сферическом вакууме ?
Здравствуйте, ononim, Вы писали:
O>Здравствуйте, _hum_, Вы писали:
__>>Всегда полагал, что семантика switch/case/case/... аналогична if/if/if/... O>А зачем switch-у семантика как у if-ов если она уже есть у if-ов?
затем же, зачем есть три конструкции для организации цикла — для более экспрессивного задания алгоритма.
O>>Здравствуйте, _hum_, Вы писали: __>>>Всегда полагал, что семантика switch/case/case/... аналогична if/if/if/... O>>А зачем switch-у семантика как у if-ов если она уже есть у if-ов? __>затем же, зачем есть три конструкции для организации цикла — для более экспрессивного задания алгоритма.
ну, скажем for имеет совсем-совсем не такую семантику как while. И в каком-то особенно философском смысле for отличается от while как switch от if/else. Я кстати пред сообщение подкрепил примером.
Как много веселых ребят, и все делают велосипед...
Здравствуйте, _hum_, Вы писали: __>юмор оценил __>а если уж дотошничать, то это алгебраическая запись, а не геометрическая — спросите у школьников, как записывается условие, число больше нуля, они вам скажут, что именно так, а не (0 < a) "нуль меньше числа"
Программирование — это не математика. Например, манера ставить ноль слева от сравнения два раза меня спасала от ошибки.
А выражение if(0 < a) можно прочитать, как "если ноль слева от a..."
на всякий случай, а то ещё скажите, что не видели:
do {
if ( data == &array[o1])
{
operation = O1;
break;
}
if ( data == &array[o2])
{
operation = O2;
break;
}
...
if ( data == &array[on])
{
mOperation = ON;
break;
}
}
while(false);
Здравствуйте, xobotik, Вы писали:
X>100500 вариантов работающих вариантов, на реальном компиляторе? Или вы про абстрактный компилятор в сферическом вакууме ?
Причём тут реализованные варианты, ты спрашивал про то, как иначе реализовать протекание, если сделать выход-по-умолчанию.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Здравствуйте, B0FEE664, Вы писали:
BFE>на всякий случай, а то ещё скажите, что не видели:
Человека в детстве запугала учительница в школе, что если он будет использовать goto, то она его будет бить линейкой по пальцам, а если её не будет, то ему откусит голову велоцираптор. Школу он законил, учительницы, бьющей по пальцам, уже нет, но психическая травма осталась на всю жизнь, поэтому он и делает такие "циклы".
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Здравствуйте, ononim, Вы писали:
O>>>Здравствуйте, _hum_, Вы писали: __>>>>Всегда полагал, что семантика switch/case/case/... аналогична if/if/if/... O>>>А зачем switch-у семантика как у if-ов если она уже есть у if-ов? __>>затем же, зачем есть три конструкции для организации цикла — для более экспрессивного задания алгоритма. O>ну, скажем for имеет совсем-совсем не такую семантику как while. И в каком-то особенно философском смысле for отличается от while как switch от if/else.
вот и я так ожидал, что "for отличается от while как switch от if/else", то есть, что первое является разновидностью синтаксического сахара второго (ведь for(<stat>_0; <condition>; <stat>_1){<body>} равносильно <stat>_0; while(<condition>){<body>; <stat>_1} ), а оказалось все не так
O>Я кстати пред сообщение подкрепил примером.
ну, как бы да, для меня это пример из области программирования на "высокоуровневом ассемблере".
Здравствуйте, B0FEE664, Вы писали:
BFE>Здравствуйте, _hum_, Вы писали:
__>>юмор оценил BFE>
__>>а если уж дотошничать, то это алгебраическая запись, а не геометрическая — спросите у школьников, как записывается условие, число больше нуля, они вам скажут, что именно так, а не (0 < a) "нуль меньше числа" BFE>Программирование — это не математика. Например, манера ставить ноль слева от сравнения два раза меня спасала от ошибки.
речь про естественность текста для чтения, а не про "ошибкоустойчивость" я в курсе про эту защиту (но я ее применяю только для сравнения, где вместо "==" легко может появиться "=")
BFE>А выражение if(0 < a) можно прочитать, как "если ноль слева от a..."
так тоже редко говорят, когда имеют в виду положительность числа
BFE>на всякий случай, а то ещё скажите, что не видели:
это я совсем не понял, к чему вы привели. что за жах?
Здравствуйте, T4r4sB, Вы писали:
TB>Здравствуйте, xobotik, Вы писали:
X>>100500 вариантов работающих вариантов, на реальном компиляторе? Или вы про абстрактный компилятор в сферическом вакууме ?
TB>Причём тут реализованные варианты, ты спрашивал про то, как иначе реализовать протекание, если сделать выход-по-умолчанию.
Я просто не понял о чем Вы, теперь понял.
P.S. Для бурных фантазий есть же "Философия программирования".
Здравствуйте, T4r4sB, Вы писали:
TB>Если в мане будет написано "ехать на лошади стоя очень просто — надо лишь не падать вперёд, назад, вправо и влево",
Под микроконтроллеры примерно так и пишут: памяти N мегабайт, эксепшны недоступны, длительность прерывания не более X тактов. И ничего, живут же люди.
TB>то это не значит, что заставлять людей ездить на лошадях стоя — это нормально.
То это значит, что в случае постоянных падений с лошади надо лишь выбрать другой язык программирования
Здравствуйте, _hum_, Вы писали:
__>Всегда полагал, что семантика switch/case/case/... аналогична if/if/if/... без break-а и if/else if/else if/... c break-ом. А тут решил не ставить break "в конце ветки выбора", и опля — сюрприз. Так что, товарищи, кто еще так же, как и я, заблуждался, будьте внимательны: __>
__>switch(1)
__>{
__> case 1 : cout << '1'; // prints "1",
__> case 2 : cout << '2'; // then prints "2"
__>}
__>
__>
__>switch(1)
__>{
__> case 1 : cout << '1'; break; // prints "1" and exits the switch
__> case 2 : cout << '2'; break;
__>}
__>
__>p.s. Вопрос к знатокам — зачем такая неочевидная и "техническая" семантика?
Пользуйся раз тебе не удобно:
#define SCASE_CONTINUE(x) case x:
#define SCASE(x, func) case x: func(); break
#define SCASEARG(x, func) case x: func(x); break
#define SDEFAULT() default: break// examplevoid printX() {
std::cout << "in god we trust!" << std::endl; // C++
}
void printArg(int arg) {
std::cout << std::to_string(arg) << std::endl; // C++
}
int main() {
int x = 1;
switch (x) {
SCASE_CONTINUE(1);
SCASE_CONTINUE(2);
SCASE_CONTINUE(3);
SCASE(4, printX);
SCASE(5, printX);
SCASEARG(10, printArg);
SDEFAULT();
}
}
Переписать, что на C++ и на C взлетит =)
P.S. Если честно, то это 3.14здец.
Здравствуйте, _hum_, Вы писали:
BFE>>на всякий случай, а то ещё скажите, что не видели: __>это я совсем не понял, к чему вы привели. что за жах?
Если на него посмотреть, то можно предположить, почему switch-case такой, какой он есть. — это с одной стороны.
С другой стороны, именно такого switch'а в C нет из-за не константности в правой части сравнения.