Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 14.01.2020, 17:24   #1
archerix
Форумчанин
 
Регистрация: 13.09.2019
Сообщений: 119
По умолчанию Goto в Java

Здравствуйте, народ - помогите человеку, который в Java не разбирается, но у которого все же возник вопрос

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

Суть проблемы вот в чем. Есть некоторое количество древних программок, написанных еще на Фортране-77 И есть идея переписать кое-что из них на какой-то более современный язык, вот прикидываю насчет Java. Основной проблемой является то, что старый фортрановский код просто кишит метками и операторами перехода. Если это не поддерживается, вопрос переписывания сразу становится куда более геморройным.

Последний раз редактировалось archerix; 14.01.2020 в 19:31.
archerix вне форума Ответить с цитированием
Старый 14.01.2020, 19:19   #2
Streletz
Старожил
 
Регистрация: 02.01.2014
Сообщений: 2,787
По умолчанию

В Java есть ключевое слово goto, но оно не используется. По сути этого оператора нет.
Цитата:
Сообщение от archerix Посмотреть сообщение
И есть идея переписать кое-то из них на какой-то более современный язык, вот прикидываю насчет Java. Основной проблемой является то, что старый фортрановский код просто кишит метками и операторами перехода. Если это не поддерживается, вопрос переписывания сразу становится куда более геморройным.
Это действительно проблема. Старый код с goto чаще всего трудно читать и поддерживать. Поэтому лучше воспользоваться поводом и избавиться от goto.

Единственная сложность. Вам судя по всему придётся осваивать другие подходы в разработке. Но, как говорится, тяжело в учении...
Streletz вне форума Ответить с цитированием
Старый 14.01.2020, 19:46   #3
archerix
Форумчанин
 
Регистрация: 13.09.2019
Сообщений: 119
По умолчанию

Я вовсе не собираюсь читать и поддерживать, вопрос только в том, чтобы с наименьшими усилиями сделать выдающую те же цифири программу на другом языке Дальше ничего не планируется развивать, ну, или по крайней мере, это уже совершенно не моя проблема.

Если я ее переписываю, скажем, на С++, где goto имеется, то мне фактически надо просто отредактировать синтаксис, оставив структуру программы как есть, и даже можно особо не вникать, что она там делает.

Если же goto не поддерживается, то тогда, видимо, придется вникать в каждую строчку программы и разбирать ее на составляющие, городить кучу условий - в общем, вырисовывается большой геморрой. Фактически надо переписать все с нуля.

Потому вот и вопрос - хоть формально не поддерживается, но может, какой-то способ все же есть?
archerix вне форума Ответить с цитированием
Старый 14.01.2020, 20:25   #4
archerix
Форумчанин
 
Регистрация: 13.09.2019
Сообщений: 119
По умолчанию

А вот такой интересный пример нашел, этот break с меткой не может служить суррогатом нормального Goto?

Код:
search:
    for (i = 0; i < arrayOfInts.length; i++) {
        for (j = 0; j < arrayOfInts[i].length; j++) {
            if (arrayOfInts[i][j] == searchfor) {
                foundIt = true;
                break search;
            }
        }
    }
archerix вне форума Ответить с цитированием
Старый 14.01.2020, 21:10   #5
Streletz
Старожил
 
Регистрация: 02.01.2014
Сообщений: 2,787
По умолчанию

Цитата:
Сообщение от archerix Посмотреть сообщение
Если я ее переписываю, скажем, на С++, где goto имеется, то мне фактически надо просто отредактировать синтаксис, оставив структуру программы как есть, и даже можно особо не вникать, что она там делает.
Тогда проще оставить всё на Фортране. Там и редактировать ничего не надо.
Streletz вне форума Ответить с цитированием
Старый 15.01.2020, 00:02   #6
archerix
Форумчанин
 
Регистрация: 13.09.2019
Сообщений: 119
По умолчанию

Я, честно говоря, того же мнения - но количество человеков, не умеющих в Фортран, постоянно растет
archerix вне форума Ответить с цитированием
Старый 15.01.2020, 01:48   #7
Streletz
Старожил
 
Регистрация: 02.01.2014
Сообщений: 2,787
По умолчанию

Цитата:
Сообщение от archerix Посмотреть сообщение
Я, честно говоря, того же мнения - но количество человеков, не умеющих в Фортран, постоянно растет
Понимаю. Но, здесь одно из двух. Либо оставаться на Фортране и быть готовым обучать ему "новобранцев", либо переходить на другую платформу и принимать её философию. Третьего не дано.
Streletz вне форума Ответить с цитированием
Старый 15.01.2020, 02:05   #8
archerix
Форумчанин
 
Регистрация: 13.09.2019
Сообщений: 119
По умолчанию

Есть третий вариант - платформа, понимающая Goto, что дает возможность переписать нужную программу с минимальными усилиями

Вариант с Java казался интересным, но если там действительно нет никаких способов организовать переходы как в старое доброе время, то трудозатраты на перековыривание кода будут слишком велики. По-моему, тут проще заново все написать, если что.

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

Последний раз редактировалось archerix; 15.01.2020 в 03:13.
archerix вне форума Ответить с цитированием
Старый 15.01.2020, 03:30   #9
Streletz
Старожил
 
Регистрация: 02.01.2014
Сообщений: 2,787
По умолчанию

Цитата:
Сообщение от archerix Посмотреть сообщение
Есть третий вариант - платформа, понимающая Goto
Это скорее частный случай второго варианта. И таких платформ почти не осталось (насколько я знаю).
Цитата:
Сообщение от archerix Посмотреть сообщение
как в старое доброе время
Тащить за собой на новую платформу недостатки давно устаревших решений, плохая идея. В прочем, решайте сами. Это Ваш проект и отвечаете за него Вы.
Streletz вне форума Ответить с цитированием
Старый 15.01.2020, 03:48   #10
archerix
Форумчанин
 
Регистрация: 13.09.2019
Сообщений: 119
По умолчанию

Ну, тот же С++ вроде пока кануть в лету не собирается - на него я уже переписывал несколько таких допотопных программ, одно удовольствие.

Тут дело в практичности. К примеру, если никто не собирается программу поддерживать, развивать или еще чего - это просто код в виде черного ящика, в который какой-то нечеловекообразный примат должен вбить пару цифер и нажать на кнопку. Поскольку Фортран-77 у современных приматов вызывает некоторую оторопь, им проще объяснить, что куда вбивать, на более современном языке
archerix вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
goto ds.Dante Общие вопросы по программированию, компьютерный форум 24 04.03.2012 13:15
Goto Avvakymova Паскаль, Turbo Pascal, PascalABC.NET 4 09.05.2011 15:25
goto Serg12 Помощь студентам 12 14.06.2010 16:31
GoTo Diego__ Microsoft Office Word 3 13.03.2010 19:55
php goto TDrive PHP 10 27.07.2009 23:04


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840