Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

25.12.2009, 23:07
|
|
Постоянный
Регистрация: 13.11.2009
Сообщений: 437
Провел на форуме: 709575
Репутация:
17
|
|
Goto использовать можно!НО, как считают программисты после использоватья этого оператора код становится менее читабельным. От этого оператора уже отказались в 90-е года.Но всетаки он присутствует в языках высокого уровня. И наиболее часто используется в assembler, он там как jmp.
Вывод: этот оператор лучше всего не использовать если хочешь казаться современным 
|
|
|

26.12.2009, 00:07
|
|
Banned
Регистрация: 24.12.2009
Сообщений: 141
Провел на форуме: 487460
Репутация:
45
|
|
имидж ничто жажда ВСЕ!
|
|
|

26.12.2009, 00:58
|
|
Постоянный
Регистрация: 06.06.2007
Сообщений: 575
Провел на форуме: 1180737
Репутация:
180
|
|
бред мне в уши...
Загляните в ядро линукса, там этих goto пруд пруди, и все они юзаются только с одной благородной целью, и делают код намного удобней чем что либо другое
|
|
|

26.12.2009, 01:27
|
|
Постоянный
Регистрация: 08.04.2007
Сообщений: 853
Провел на форуме: 5812656
Репутация:
1540
|
|
В примере с матрицами можно было бы заюзать класс матрицы, вместо int[,].
Объекты этого класса могли бы проверять сами себя и бросаться исключениями.
Конечно же, всё зависит от задачи.
бред мне в уши...
Загляните в ядро линукса, там этих goto пруд пруди, и все они юзаются только с одной благородной целью, и делают код намного удобней чем что либо другое
Ага, и этот код очень легко читать и понимать.
|
|
|

26.12.2009, 01:33
|
|
Banned
Регистрация: 24.12.2009
Сообщений: 141
Провел на форуме: 487460
Репутация:
45
|
|
писалось в стиле Аля-Си.... а там скорее
int *mass;
mass =new int[n][k];
... типа чето делаю не относясь к задаче алгола
delete[] mass;
чем классная лабуда с конструкторами деструкторами и исключениями лучше... попробуйте обьяснить человеку пишущему на ассмблере но не знающеего Си чему соответствуют исключения и что это далеко не Goto ... боюсь он со смехом вам диззассемблирует! 8))
а по поводы простоты .... можно взять человека с улицы и обьяснить ему код с классами и в стиле Аля-Си, результат о том какой код он поймет предсказуем!
Последний раз редактировалось Retimiled; 26.12.2009 в 08:13..
|
|
|

26.12.2009, 02:18
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
бред мне в уши...
Загляните в ядро линукса, там этих goto пруд пруди, и все они юзаются только с одной благородной целью, и делают код намного удобней чем что либо другое
Если ты внимательно смотрел, то должен был заметить что в основном он используется для обработки ошибок, что вполне допустительно для С. В таких языках как С++, Java, C#, есть исключения которые избавляют программера использовать метки для обработки ошибок.
В случае кода Algol'a, можно было бы поступить более изящней, как написал nerezus и Qwazar. Случай же с глубокой вложенностью циклов не более чем классический и часто можно встретить в "goto холиварах", а вот на практике встречается не так часто ибо можно переписать без использования последнего.
|
|
|

26.12.2009, 10:53
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
Код:
public TcpClient Connect(IPEndPoint host)
{
TcpClient client = new TcpClient();
int maxTryCount = 5;
while(true) {
try
{
client.Connect(host);
return client;
}
catch (SocketException) {
if(0 == --maxTryCount) {
throw;
}
}
}
}
Вот вроде рабочий вариант без goto. Не проверял на синтаксис, но работать должно )
|
|
|

26.12.2009, 11:30
|
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме: 2050916
Репутация:
0
|
|
Сообщение от nerezus
Вот вроде рабочий вариант без goto. Не проверял на синтаксис, но работать должно )
Да, это рабочий вариант. Но проще ли он ?
Любой алгоритм можно реализовать без goto. Вопрос в том, будет ли он проще для восприятия.
|
|
|

26.12.2009, 11:43
|
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме: 2050916
Репутация:
0
|
|
Сообщение от razb
В случае кода Algol'a, можно было бы поступить более изящней, как написал nerezus и Qwazar.
Почему-то никто не отреагировал на критику такого подхода. На всякий случай повторю:
1)Падение производительности
2)Необходимость передачи в функцию большого числа параметров.
3)Код начинает изобиловать кучей малопонятных функций, с неопределенной семантикой.
Конечно это крайние случаи. Но и я в первом постинге и пишу про карйние случаи. В 90% случаев конечно я тоже выношу участки кода в отдельные функции. Но остаются еще 10% где это не рационально. И там я применяю тот подход который сделает код быстрее и понятнее, а не разбиваю лоб об стену, но пишу "правильный" код.
|
|
|

26.12.2009, 12:03
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
Кода меньше.
А можно просто твой вариант заменить, исправив гото на цикл и break.
Вопрос в том, будет ли он проще для восприятия.
как минимум - не сложнее.
1)Падение производительности
На сколько процентов? Я думаю, что на 0%
2)Необходимость передачи в функцию большого числа параметров.
Не большего, чем у тебя
3)Код начинает изобиловать кучей малопонятных функций, с неопределенной семантикой.
Субъективно, причем большинство так думает именно о goto.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|