The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Увидел свет язык программирования Nim 1.0, opennews (??), 24-Сен-19, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


175. "Увидел свет язык программирования Nim 1.0"  –2 +/
Сообщение от аноним3 (?), 24-Сен-19, 20:08 
не вижу проблемы у отступов вообще. писал скрипт в простом текстовике и даже он отступы сам выставлял при переходе на новую строку. что вы уперлись в отступы? проблема в ниме скорее в том, что он вместе с синтаксисом питона притащил сишный. по итогу получилось, что проще пользоваться сишкой чем нимом. один фиг код транслируется в сишный. вот если бы они умудрились сделать полностью питоновский стиль и при этом компилируемый в бинарь вот это можно было бы похвалить. питон ведь стал популярен из за простоты и меньшего количества кода в сравнении с теми же плюсами и другими. а так что они сделали? смешали питон с сишкой и паскалем? зачем? сделайте аналог того же раста, но с питоновским синтаксисом многие поаплодируют, но ни у кого нет желания писать компилятор способный распознавать тип применяемых переменных, как это сделано в самом питоне.короче желания понятны, но пошли не туда. решили облегчить себе жизнь портированием кода в сишку и потом компилить. это же только усложняет все.
Ответить | Правка | Наверх | Cообщить модератору

196. "Увидел свет язык программирования Nim 1.0"  +/
Сообщение от Илья (??), 24-Сен-19, 22:03 
> сделайте аналог того же раста, но с питоновским синтаксисом многие поаплодируют,

Не получится, второй раст напишете, только без скобок и с отступами

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

Либо я вас не понял, либо все языки со статической типизацией всегда знают типы всех значений на этапе компиляции (ну если мы не рассматриваем каст к object и обратно к более конкретному типу)

Ответить | Правка | Наверх | Cообщить модератору

201. "Увидел свет язык программирования Nim 1.0"  +/
Сообщение от аноним3 (?), 24-Сен-19, 23:08 
в питоне нет необходимости указывать тип переменной, например инт, в то время как в компилируемых языках требуется указание типа присваиваемой переменной еще до основного блока программы. в питон же можно легко ввести новую переменную посреди блока, перичем нет необходимости указания её типа. в этом одна из фишек питона. и создать компилятор, который сам сможет определить в исходнике этот тип  и при этом правильно определять границы вложенных блоков оказывается весьма нетривиальной задачей. а учитывая еще и динамическую типизацию, то сами понимаете, что сделать такое очень непросто. это как внести в компилятор целый эвристический анализатор.
Ответить | Правка | Наверх | Cообщить модератору

222. "Увидел свет язык программирования Nim 1.0"  +/
Сообщение от meantraitor (?), 25-Сен-19, 12:51 
Возьмем Котлин.
Вроде, компилируемый язык. Но в нем необязательно указывать тип переменной.
Тем не менее - это язык со статической типизацией. Чудеса, да и только ;)


Ответить | Правка | Наверх | Cообщить модератору

225. "Увидел свет язык программирования Nim 1.0"  –2 +/
Сообщение от аноним3 (?), 25-Сен-19, 17:11 
но весь набор питона кто нибудь смог уместить в компилируемый язык? пока не видел. либо синтаксис аналогичный сишному, либо интерпретируемый язык.
Ответить | Правка | Наверх | Cообщить модератору

230. "Увидел свет язык программирования Nim 1.0"  +/
Сообщение от Илья (??), 26-Сен-19, 22:12 
> в питоне нет необходимости указывать тип переменной, например инт, в то время
> как в компилируемых языках требуется указание типа присваиваемой переменной еще до
> основного блока программы.

Ну пример из учебника раста:
    fn live_neighbor_count(&self, row: u32, column: u32) -> u8 { // В сигнатуре обязательны типы
        let mut count = 0;
        for delta_row in [self.height - 1, 0, 1].iter().cloned() {
            for delta_col in [self.width - 1, 0, 1].iter().cloned() {
                if delta_row == 0 && delta_col == 0 {
                    continue;
                }

                let neighbor_row = (row + delta_row) % self.height;
                let neighbor_col = (column + delta_col) % self.width;
                let idx = self.get_index(neighbor_row, neighbor_col);
                count += self.cells[idx] as u8; // Единственное явное приведение
            }
        }
        count
    }

Все объявленные переменные (я насчитал 6) имеют свой строгий тип, но он выводится неявно. То, что вы называете "эвристический анализатор" уже не менее 10 лет работает в компилируемых языках.
В дотнете то же самое, только типы выводятся через var. В джаве то же самое. В котлине то то же самое.

Ответить | Правка | К родителю #201 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру