Я ученый, работающий в основном с С++, но я хотел бы найти лучший язык. Я ищу предложения, я даже не уверен, что мой "язык сна" существует (пока), но здесь мой список пожеланий;
ВАЖНЫЕ ХАРАКТЕРИСТИКИ (в порядке важности)
1.1: Производительность: Для науки производительность очень важна. Я прекрасно понимаю важность производительности, а не только скорость выполнения, но когда ваша программа должна работать в течение нескольких часов, вы просто не можете позволить себе писать ее на Python или Ruby. Он не должен быть таким быстрым, как С++, но он должен быть достаточно близким (например: Fortran, Java, С#, OCaml...).
1.2: Высокоуровневый и элегантный: Я бы хотел сконцентрироваться как можно больше на науке и получить четкий код. Мне также не нравятся многословные языки, такие как Java.
1.3: Доминирующий функционал: Мне нравится функциональное программирование, и я считаю, что он очень подходит для моего стиля и научного программирования. Меня не волнует, поддерживает ли язык обязательное программирование, это может быть плюсом, но он должен фокусироваться и поощрять функциональное программирование.
1.4: Переносимость: Хорошо работает в Linux (особенно Linux!), Mac и Windows. И нет, я не думаю, что F # отлично работает на Linux с моно, и я не уверен, что OCaml хорошо работает на окнах;)
1.5: Объектно-ориентированный, желательно под философией "все является объектом": Я понял, насколько мне понравилось объектно-ориентированное программирование, когда мне пришлось заниматься чистым C не так давно. Мне нравятся языки с сильной приверженностью объектно-ориентированному программированию, а не просто робкой поддержкой.
НЕ ДЕЙСТВИТЕЛЬНО ВАЖНО, НО ВЕЩИ, КОТОРЫЕ БЫЛИ БЛАГОДАРНЫ
2.1: "Не слишком сильный" ввод: Я нахожу, что сильная система ввода Haskell вызывает раздражение, мне нравится иметь возможность делать неявное литье.
2.2: Инструменты: Хорошие инструменты всегда являются плюсом, но я думаю, что это действительно зависит от языков. Я играл с Haskell, используя Geany, легкий редактор, и я никогда не чувствовал себя инвалидом. С другой стороны, я бы не сделал то же самое с Java или даже Scala (Scala, в частности, кажется, не хватает хороших инструментов, что поистине является позором). Java действительно является # 1 языком здесь, с NetBeans и Javadoc, программирование на Java - это просто и весело.
2.3: Мусор собрал, но перевел или скомпилировал без виртуальной машины. Я ничего не имею против виртуальных машин, но у двух гигантов в домене есть свои проблемы. На бумаге структура .net кажется намного лучше и особенно подходит для функционального программирования, но на практике она по-прежнему очень ориентирована на Windows и поддержка Linux/MacOS ужасная не так хороша, как должна быть, поэтому его не стоит рассматривать. Java теперь является зрелой виртуальной машиной, но она раздражает меня на некоторых уровнях: мне не нравятся способы ее выполнения с исполняемыми файлами, дженериками, и он пишет ужасные GUI (хотя это не так уж плохо).