GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.2 (6)<< < Пред. | След. > >>   Поиск:  
 Автор Тема: На: SRC: здесь можно выкладывать исходники
IvanVlaskin1976
Сообщений: 9071
На: SRC: здесь можно выкладывать исходники
Добавлено: 12 ноя 21 5:58
да ты же врёшь, с goto код намного нагляднее, так как максимально приближен к структурному графическому представлению алгоритмов
[Ответ][Цитата]
гость
23.129.64.*
На: SRC: здесь можно выкладывать исходники
Добавлено: 12 ноя 21 6:08
Цитата:
Автор: IvanVlaskin1976

да ты же врёшь, с goto код намного нагляднее, так как максимально приближен к структурному графическому представлению алгоритмов
Почитай википедию хотя бы дворник, если книжек никаких не читал по программированию. Тебе советуют люди которые получают за написание кода по 5-7к$ в месяц, а ты споришь и чушь несешь.

Цитата:

https://ru.wikipedia.org/wiki/Goto

Оператор goto в языках высокого уровня является объектом критики, поскольку чрезмерное его применение приводит к созданию нечитаемого «спагетти-кода». Впервые эта точка зрения была отражена в статье Эдсгера Дейкстры «Доводы против оператора GOTO»,[2] который заметил, что качество программного кода обратно пропорционально количеству операторов goto в нём. Статья приобрела широкую известность как среди теоретиков, так и среди практиков программирования, в результате чего взгляды на использование оператора goto были существенно пересмотрены. В своей следующей работе Дейкстра обосновал тот факт, что для кода без goto намного легче проверить формальную корректность.

Код с goto трудно форматировать, так как он может нарушать иерархичность выполнения (парадигму структурного программирования) и потому отступы, призванные отображать структуру программы, не всегда могут быть выставлены правильно. goto также мешает оптимизации компиляторами управляющих структур.[3]

Некоторые способы применения goto могут создавать проблемы с логикой исполнения программы:

Если некоторая переменная инициализируется (получает значение) в одном месте и потом используется далее, то переход в точку после инициализации, но до использования, приведёт к тому, что будет использовано значение, которое находилось в памяти, выделенной под переменную, до момента выделения (и которое, как правило, является произвольным и случайным).
Передача управления внутрь тела цикла приводит к пропуску кода инициализации цикла или первоначальной проверки условия. Аналогично, передача управления внутрь процедуры или функции приводит к пропуску её предисловия (пролога), в котором производится инициализация (выделение памяти под локальные переменные и т. п.).
Доводы против оператора goto оказались столь серьёзны, что в структурном программировании его стали рассматривать как крайне нежелательный. Это нашло отражение при проектировании новых языков программирования. Например, goto был запрещён в Java и Ruby. В ряде современных языков он всё же оставлен из соображений эффективности в тех редких случаях, когда применение goto оправдано. Так, goto сохранился в Аде — одном из наиболее продуманных с точки зрения архитектуры языков за всю историю.[4] Однако в тех современных языках высокого уровня, где этот оператор сохранился, на его использование, как правило, накладываются жёсткие ограничения, препятствующие использованию наиболее опасных методов его применения: например, запрещается передавать управление извне цикла, процедуры или функции внутрь. Стандарт языка C++ запрещает обход инициализации переменной с помощью goto.

Формально доказано (теорема Бёма — Якопини), что применение goto не является обязательным, то есть не существует такой программы с goto, которую нельзя было бы переписать без него с полным сохранением функциональности (однако, возможно, с потерей эффективности).

[Ответ][Цитата]
IvanVlaskin1976
Сообщений: 9071
На: SRC: здесь можно выкладывать исходники
Добавлено: 12 ноя 21 6:20
Изменено: 12 ноя 21 6:22
чукча не читатель, чукча писатель
ты же не читаешь что пишут другие
достоинства и недостатки goto были расписаны в этой теме
только идиот будет перепрыгивать goto через инициализацию, а вот выходить из цикла им как раз удобно, намного удобнее break

этот дворник кстати написал 11 тысяч строк кода
тебе за всю жизнь столько не написать
[Ответ][Цитата]
гость
139.28.252.*
На: SRC: здесь можно выкладывать исходники
Добавлено: 12 ноя 21 6:23
Цитата:
не знаю на каком это языке, но я бы за повторяющиеся конструкции (if-ы) руки бы оторвал. Язык для того и придуман, чтобы их избежать. Массив со значениями, цикл и условие, и код сразу сокращается в три раза. Тут на форуме был уже сторож, который не мог циклами пользоваться, типа "ученый" какой-то, "биолог", так он 500 значений массива проставлял вручную, а не в цикле, вот так:


Ты есть очень не прав и плёхо, очень плёхо понимаешь программирование. Во freepascal есть различные математические операции, например сравнение значения переменной типа byte со множествами:
if Q3 in [1,2,3,4,120,255] then goto 1;

И критикуемая тобой функция делает тоже самое, только для переменной типа int64 или меньше и для 12-и чисел. Использовать эту функцию можно в строчку, выглядит она похоже, видно что она сравнивает. А если ты в интерфейс функции поместишь массив, то для его заполнения ты потратишь много строчек, при использовании функции должен будешь его создать и ухудшишь читаемость ниже плинтуса! В общем, создашь одни неудобства и раздувание кода программы при каждом применении своей укороченной функции. Ты просто клонируешь много раз код сокращённый в одной функции во много других. Ты мало программировал математику, потому и думаешь что её можно без проблем заменить везде - не везде а спрятать под капот. Вот эта функция с повторяющимся кодом лежит под капотом и просто работает, а твоя замена работает монструозно.
[Ответ][Цитата]
IvanVlaskin1976
Сообщений: 9071
На: SRC: здесь можно выкладывать исходники
Добавлено: 12 ноя 21 6:26
во человек понимает
наш человек
[Ответ][Цитата]
гость
139.28.252.*
На: SRC: здесь можно выкладывать исходники
Добавлено: 12 ноя 21 6:35
Цитата:
Почитай википедию хотя бы дворник, если книжек никаких не читал по программированию. Тебе советуют люди которые получают за написание кода по 5-7к$ в месяц, а ты споришь и чушь несешь.


Вракопедия врёт как сивый мерин, особенно про физику, и является средством пропаганды. А те люди, что много получают за вставливание значений в готовые фреймворки для решения типовых задач, просто хорошо пристроились. Такие халявные программистские должности есть не везде. Половина народа на земном шарике пошла бы в такие погромисты, если бы такие должности росли как грибы везде. Программисты пишущие сложный код сами, знают что совсем без гото плохо и догадываются, что увеличение его использования вреда не принесёт, потому не разражаются воплями его увидев. А если мало его используют, то из страха репрессий со стороны секты готофобов и просто их этому в испорченной сектантами литературе не учили.
[Ответ][Цитата]
гость
178.176.213.*
На: SRC: здесь можно выкладывать исходники
Добавлено: 12 ноя 21 6:54
Цитата:
Автор: гость



Ты есть очень не прав и плёхо, очень плёхо понимаешь программирование. Во freepascal есть различные математические операции, например сравнение значения переменной типа byte со множествами:
if Q3 in [1,2,3,4,120,255] then goto 1;

И критикуемая тобой функция делает тоже самое, только для переменной типа int64 или меньше и для 12-и чисел. Использовать эту функцию можно в строчку, выглядит она похоже, видно что она сравнивает. А если ты в интерфейс функции поместишь массив, то для его заполнения ты потратишь много строчек, при использовании функции должен будешь его создать и ухудшишь читаемость ниже плинтуса! В общем, создашь одни неудобства и раздувание кода программы при каждом применении своей укороченной функции. Ты просто клонируешь много раз код сокращённый в одной функции во много других. Ты мало программировал математику, потому и думаешь что её можно без проблем заменить везде - не везде а спрятать под капот. Вот эта функция с повторяющимся кодом лежит под капотом и просто работает, а твоя замена работает монструозно.


мне кажется, ты сам плёхо понимаешь программирование, либо твой паскаль говно полное, если не позволяет делать элементарные вещи. В плюсах нет никаких проблем сравнить любые наборы чисел, для этого не надо писать if двенадцать раз подряд, это идиотизм. А если не 12 а пятьсот сравнений будет, тоже будешь вручную все условия прописывать?
[Ответ][Цитата]
IvanVlaskin1976
Сообщений: 9071
На: SRC: здесь можно выкладывать исходники
Добавлено: 12 ноя 21 6:59
Цитата:
Автор: гость
мне кажется, ты сам плёхо понимаешь программирование, либо твой паскаль говно полное, если не позволяет делать элементарные вещи. В плюсах нет никаких проблем сравнить любые наборы чисел, для этого не надо писать if двенадцать раз подряд, это идиотизм. А если не 12 а пятьсот сравнений будет, тоже будешь вручную все условия прописывать?

это скорость
можно конечно это в массив или даже в файл спихнуть, но это тормоза
[Ответ][Цитата]
гость
178.176.213.*
На: SRC: здесь можно выкладывать исходники
Добавлено: 12 ноя 21 7:05
Цитата:
Автор: гость
Вракопедия врёт как сивый мерин, особенно про физику, и является средством пропаганды. А те люди, что много получают за вставливание значений в готовые фреймворки для решения типовых задач, просто хорошо пристроились. Такие халявные программистские должности есть не везде. Половина народа на земном шарике пошла бы в такие погромисты, если бы такие должности росли как грибы везде. Программисты пишущие сложный код сами, знают что совсем без гото плохо и догадываются, что увеличение его использования вреда не принесёт, потому не разражаются воплями его увидев. А если мало его используют, то из страха репрессий со стороны секты готофобов и просто их этому в испорченной сектантами литературе не учили.


Да, поддерживаю, кстати про программистов. Сужу по тому говну, которым я вынужден пользоваться. Тормозит, куча ошибок, отсутствие важного функционала и, наоборот, куча ненужных, неиспользуемых функций. За что люди деньги получают, неясно.
[Ответ][Цитата]
гость
178.176.213.*
На: SRC: здесь можно выкладывать исходники
Добавлено: 12 ноя 21 7:08
Цитата:
Автор: IvanVlaskin1976
это скорость
можно конечно это в массив или даже в файл спихнуть, но это тормоза


не можно, а нужно. Данные в массивы и в цикле сравнение. Не надо такую хуйню писать, которая написана. и будет все просто и понятно
[Ответ][Цитата]
гость
139.28.252.*
На: SRC: здесь можно выкладывать исходники
Добавлено: 12 ноя 21 7:09
Цитата:
Для машины goto – вполне адекватен, для человека нет, человек мыслит линейно, нелинейность даётся с большим трудом(деньгами). Если вы пишите код не большого объёма(менее 10к строк) для себя лично и не собираетесь его поддерживать\редактировать затем через год(ы), вы вольны как угодно извращаться, лишь бы был результат.


Для людей обученных, в гото нет ничего сложного. А если вы необучены понимать один простой оператор, это значит что у вас в мозгу нет для этого данных - пробел в обучении. Потому вы нелинейный изврат воспринимаете как облегчение.

Цитата:
Но даже если ваш код никто не будет читать кроме вас, через пол года — год если вам понадобится использовать ваш же спагетти-код, вы проклянёте самого себя и вероятно проще будет переписать его заново чем разбираться в работе такого кода чтобы поправить и это не преувеличение.


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

Цитата:
Поэтому есть ряд принципов которые облегчают понимание и сопровождение кода, для себя лично и других членов команды. Эти принципы конечно немного раздувают объём кода(на 20-30%), но следуя им вы облегчаете себе жизнь и коллегам. Один из них отказ от goto в высокоуровневых ЯП.


За неиспользование гото в командах, они должны хорошо платить. Как говорится, любой каприз за ваши бабки, даже погрузка резинвативов вилами.

Цитата:
Вообще все ЯП придумали ТОЛЬКО для человека, чтобы упростить жизнь, машина жрёт двоичные команды, пишете в машинных кодах тогда, нафиг вам функции и ООП? Сплошное полотно команд с прыжками туда-сюда и круто! Только вот хеловорлд будете писать неделю а цсв парсер 10 лет.

Гото, это аналог посылания на 3 буквы, то есть конструкция из языка людей, естественная и которой люди описывают множество задач в самые краткие сроки! Та функция "читальник" из примера, как раз и пример одного из парсеров с использованием гото. Она читает файл, находит в нём заданные строки и сортирует их по массиву строк. Первая версия написана никак не за 10 лет а быстро, а после много раз апгрейдилась, причём гото в ней становилось больше. Прыгать внутри циклов, это естественно для парсеров. Прыгать при обработки условия с кучей значений тоже естественно, потому что формула уже с пятью if и тремя else плохо читаема и ещё хуже апгрейдится - попробуй найти в ней место где можно добавить код и не порушить логику. А гото позволяет дробить такие формулы на множество мелких, которые легко читаются и дорабатываются.
[Ответ][Цитата]
гость
139.28.252.*
На: SRC: здесь можно выкладывать исходники
Добавлено: 12 ноя 21 7:22
Цитата:
мне кажется, ты сам плёхо понимаешь программирование, либо твой паскаль говно полное, если не позволяет делать элементарные вещи. В плюсах нет никаких проблем сравнить любые наборы чисел, для этого не надо писать if двенадцать раз подряд, это идиотизм. А если не 12 а пятьсот сравнений будет, тоже будешь вручную все условия прописывать?


Плюсы сами по себе говно не предназначенное для написания приложений, только для системных либ. Но разве индустрию волнуют сложности кодовых обезьян? На чём закажут, на том и напишут. В плюсах куча проблем на ровном месте. Например, есть такой свободный видеокодек lagarith. Много лет назад его написал один программист на студии, и с тех пор никто не смог перенести его на gcc и собрать под линукс, хотя там и кода немного. Написано на плюсах, автор что-то не доделал и забросил? Окей, код сразу превратился в необслуживаемое говно мамонта, в которое кто-то полезет только за много денег. А если код был свободный и денег за него не полагалось изначально, то это финиш.

Практика показывает, что 2-12 сравнений хватает для большинства задач. А если надо будет сделать 500, то напишется парсер.И не надо говорить про плюсы, что там чего-то такого нет, пока не загляните в их исходники и не убедитесь. Но ведь не заглянете, там ведь трэш и угар, за малое количество денег и близко туда не полезете разбираться как оно работает. И при этом на плюсах написана куча программ со свободным кодом, в которых надо что-то поправить, но кто ж туда полезет, это же плюсы
[Ответ][Цитата]
гость
51.161.43.*
На: SRC: здесь можно выкладывать исходники
Добавлено: 12 ноя 21 9:24
Цитата:
Автор: гость
Плюсы сами по себе говно не предназначенное для написания приложений, только для системных либ.
Ну да, на гугле работают одни дебилы, на амазоне и тп. а вы - умный готолоер.

[Ответ][Цитата]
гость
185.107.47.*
На: SRC: здесь можно выкладывать исходники
Добавлено: 12 ноя 21 9:32
[Ответ][Цитата]
IvanVlaskin1976
Сообщений: 9071
На: SRC: здесь можно выкладывать исходники
Добавлено: 12 ноя 21 9:39
Не, С++ эт скорость
Я сознательно перешёл с Си на С++, так как моя ,Универсальная Экспертная Система может потребовать работы с Объектами в памяти
Пока что работа с объектами в виде файлов, но кто знает

Я сравнивал Си и С++ по скорости работы, они одинаковые

[Ответ][Цитата]
 Стр.2 (6)1  [2]  3  4  5  6<< < Пред. | След. > >>