(программистам)
void main() {
var name = IO.readln("What is your name? ");
IO.println("Hello, " + name);
}
Никогда не догадаетесь, какой это язык программирования.
Джава. Это Джава. Новая версия JDK 25, вышедшая сегодня.
Но как??! спросите вы.
Значит так. Начинаем с привычного (вместо Scanner можете представить BufferedReader, если предпочитаете, неважно)
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("What is your name? ");
String name = scanner.nextLine();
System.out.println("Hello, " + name);
}
}
и сознательно вносим в язык возможности упростить, главным образом для программистов-новичков:
- не надо объявлять класс, "голые функции" по умолчанию принадлежат одному анонимному классу
- не надо объявлять public, для программы из одного файла нормально разрешить main() быть функцией и в классе package-visibility
- не надо static, запускающий программу код создаст класс, если у него есть дефолтный конструктор без аргументов (а у этого нового анонимного класса есть)
- разрешаем main без аргументов
- var без String уже раньше был, тип известен из функции readln()
- вводим новый класс IO для супер-простого ввода/вывода, делаем его частью java.lang, чтобы не надо было импортировать.
И вот результат.
Прощай, "public static void main". Ты держался 30 лет, но твое время прошло.
Даже не знаю, что я ощущаю по этому поводу. Я ненавижу многословность Джавы, но это как-то уж слишком упрощает. Возможно, ловушка тут в том, что эти возможности ввели сознательно для упрощения самых начальных программ, и в итоге они дают новичкам неверное впечатление о том, как будут выглядеть их большие программы на Джаве. А они все-таки будут выглядеть как раньше, по большей части.
Но с другой стороны, чего это я брюзжу. Я даже и не пишу на Джаве, и не собираюсь в ближайшем будущем. Люди придумали интересный способ упростить синтаксис простеньких программ на Джаве, при этом оставаясь в рамках языка, без каких-то дикостей типа макро-обработки или супер-специальных случаев. Ну и молодцы.
А вы как думаете?
(подробно:
https://openjdk.org/jeps/512)