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

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

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


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

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

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

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

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

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

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

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

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

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

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

А вот такой интересный пример нашел, этот 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, 22:10   #5
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,739
По умолчанию

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

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

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

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

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

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

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

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

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

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

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

Опции темы


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