The OpenNET Project / Index page

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



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

Оглавление

Релиз компилятора Python - Nuitka 0.4.2, opennews (??), 31-Мрт-13, (0) [смотреть все]

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


13. "Релиз компилятора Python - Nuitka 0.4.2"  –1 +/
Сообщение от Аноним (-), 31-Мрт-13, 11:50 
Когда люди пытаются компилить язык с динамической типизцией, неизбежно возникает необходимость предсказания типов и перекомпиляции, в случае если изначально тип был определён неверно. Потом они говорят: ребята, давайте сделаем типизацию, дадим подсказку нашему чудо-компилеру. Так получается новый недо-язык, который имеет мало общего с исходным.

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

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

16. "Релиз компилятора Python - Nuitka 0.4.2"  +5 +/
Сообщение от Grmmhnd (?), 31-Мрт-13, 12:20 
Беда, в том, что, как правило, при использовании более производительных решений начинает страдать скорость разработки, поэтому и появляются такие подобия.
Но, все-таки, то, как к этой проблеме подходят Scala и Go, мне кажется более правильным.
Ответить | Правка | Наверх | Cообщить модератору

20. "Релиз компилятора Python - Nuitka 0.4.2"  +/
Сообщение от лох (?), 31-Мрт-13, 12:43 
> не хотят мириться с тем, что он тормозит
> Каждой задаче свой язык

вы сами себе ответили. Ничего не тормозит. По крайней мере на тех задачах, на которых рационально использовать питон.

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

120. "Релиз компилятора Python - Nuitka 0.4.2"  +/
Сообщение от Аноним (-), 02-Апр-13, 05:14 
> задачах, на которых рационально использовать питон.

Т.е. всякие одноразовые скриптики.

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

142. "Релиз компилятора Python - Nuitka 0.4.2"  +/
Сообщение от Аноним (-), 02-Апр-13, 18:55 
Одноразовые скриптики — это оксюморон, как горячий лёд или windows-сервер. Писать скрипт для того, чтобы использовать его один раз, а потом выбросить, нецелесообразно. Скрипты пишут тогда, когда они могут пригодиться еще не раз.
И да, какой смысл писать скрипт на python, если есть sh, perl и tcl?
Ответить | Правка | Наверх | Cообщить модератору

28. "Релиз компилятора Python - Nuitka 0.4.2"  +/
Сообщение от Аноним (-), 31-Мрт-13, 13:13 
>Когда люди пытаются компилить язык с динамической типизцией, неизбежно возникает необходимость предсказания типов и перекомпиляции, в случае если изначально тип был определён неверно

Нет. Компилятор вычисляет типы по простым правилами auto a = "str"; или решением уравнений. Функции в питоне имеет смысл обрабатывать как шаблонные функции в C++, то есть для каждого набора типов аргументов инстансцируется специализация функции и генерируется код для конкретного набора типов.

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

32. "Релиз компилятора Python - Nuitka 0.4.2"  +/
Сообщение от Аноним (-), 31-Мрт-13, 13:23 
>>Когда люди пытаются компилить язык с динамической типизцией, неизбежно возникает необходимость предсказания типов и перекомпиляции, в случае если изначально тип был определён неверно
> Нет. Компилятор вычисляет типы по простым правилами auto a = "str"; или
> решением уравнений. Функции в питоне имеет смысл обрабатывать как шаблонные функции
> в C++, то есть для каждого набора типов аргументов инстансцируется специализация
> функции и генерируется код для конкретного набора типов.

Это подходит только для простых типов, а что делать с объектами?

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

41. "Релиз компилятора Python - Nuitka 0.4.2"  –1 +/
Сообщение от Аноним (-), 31-Мрт-13, 13:48 
делать толстые таблицы методов на манер того, как это делается в objective C.
Ответить | Правка | Наверх | Cообщить модератору

31. "Релиз компилятора Python - Nuitka 0.4.2"  +1 +/
Сообщение от Аноним (-), 31-Мрт-13, 13:20 
> Когда люди пытаются компилить язык с динамической типизцией, неизбежно возникает необходимость предсказания типов и перекомпиляции, в случае если изначально тип был определён неверно

Избежно.


#include <stdio.h>
// Упрощённая модель динамической типизации:
typedef enum type_t {NULL, INTEGER, REAL, OBJECT} type_t;
typedef struct dynamic_type {
    type_t tag;
    union {
        long integer_value;
        double real_value;
        void *pointer_value;
    };
} dynamic_type;

int main(){
    dynamic_type variable1 = {.tag = INTEGER, .integer_value = 42};
    dynamic_type variable2 = {.tag = REAL, .real_value = 3.14159265358979};
    printf("SUMM: %f\n", variable1.integer_value + variable2.real_value);
}


Это что, правда так сложно?
Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

34. "Релиз компилятора Python - Nuitka 0.4.2"  –1 +/
Сообщение от Аноним (-), 31-Мрт-13, 13:27 
>[оверквотинг удален]
> } dynamic_type;
> int main(){
>     dynamic_type variable1 = {.tag = INTEGER, .integer_value =
> 42};
>     dynamic_type variable2 = {.tag = REAL, .real_value =
> 3.14159265358979};
>     printf("SUMM: %f\n", variable1.integer_value + variable2.real_value);
> }
>
> Это что, правда так сложно?

Не сложно, но при чём тут компиляция питона в си? Возмём код z = x + y. Теперь покажите, как сделать из этого си, если тип x и y не известен.

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

44. "Релиз компилятора Python - Nuitka 0.4.2"  +/
Сообщение от CPP (??), 31-Мрт-13, 13:50 
>[оверквотинг удален]
>> 42};
>>     dynamic_type variable2 = {.tag = REAL, .real_value =
>> 3.14159265358979};
>>     printf("SUMM: %f\n", variable1.integer_value + variable2.real_value);
>> }
>>
>> Это что, правда так сложно?
> Не сложно, но при чём тут компиляция питона в си? Возмём код
> z = x + y. Теперь покажите, как сделать из этого
> си, если тип x и y не известен.

В С++ думаю, что это будут объекты (абстрактные типы), а не базовые типы данных, так же как в C#. Возникает ощущение, что человек изобретает велосипед -)

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

46. "Релиз компилятора Python - Nuitka 0.4.2"  +/
Сообщение от Аноним (-), 31-Мрт-13, 13:52 
> Возмём код z = x + y. Теперь покажите, как сделать из этого си, если тип x и y не известен.


python_type z;
if (x.__add__.type == PYTHON__FUNC){
    x.__add__(x, y, &z);
}

//тем временем где-то внутри функции python_float.__add__(const python_type x, const python_type y, python_type &z):
double x_temp, y_temp;
bool result = cast_to_double(x,&x_temp);
bool result = result && cast_to_double(y,&y_temp);
if (result){
  z.type = PYTHON_FLOAT;
  z.float_value = x_temp + y_temp;
  return SUCCESS;
} else {
  fputs("Type conversion error", stderr);
  return FAILURE;
}


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

55. "Релиз компилятора Python - Nuitka 0.4.2"  +/
Сообщение от Аноним (-), 31-Мрт-13, 14:22 
Читаю: если x позволяет складывать, вызвать функцию add в предположении что x,y,z это double. Ну да ладно, по крайней мере есть код. Фишка в том, что это идёт в сторону cpython. Что нужно получить на выходе:

double z = x + y;

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

int z = x + y;

Ибо целые числа работают значительно быстрее. Посему без перекомпиляции никак.

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

60. "Релиз компилятора Python - Nuitka 0.4.2"  +/
Сообщение от Аноним (-), 31-Мрт-13, 14:48 
> Что нужно получить на выходе:
> double z = x + y;
> А ещё лучше сразу машинный код. В случае когда есть хотя бы минимальная возможность, сделать:
> int z = x + y;
> Ибо целые числа работают значительно быстрее. Посему без перекомпиляции никак.

Нет.
Если типы x и y известны заранее, то и тип z будет известен заранее (или будет заранее известный Error), и никакая перекомпиляция не потребуется.
Если тип x или y не известен заранее, то и тип z будет неизвестен заранее, и никакая перекомпиляция не поможет.
Что непонятно?

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

79. "Релиз компилятора Python - Nuitka 0.4.2"  +/
Сообщение от Аноним (-), 01-Апр-13, 12:27 
> Не сложно, но при чём тут компиляция питона в си? Возмём код
> z = x + y. Теперь покажите, как сделать из этого
> си, если тип x и y не известен.

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

Во-вторых изучите мат.часть. На лицо полное не понимание вопроса. Есть много материалов по типизации, например вот хорошая статья: http://habrahabr.ru/post/161205/

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

122. "Релиз компилятора Python - Nuitka 0.4.2"  +/
Сообщение от Аноним (-), 02-Апр-13, 05:18 
> z = x + y. Теперь покажите, как сделать из этого си, если тип x и y не известен.

Для си вообще до балды на самом деле какие там типы. Значения в памяти и нии...т. Как именно вы желаете суммировать гайки с бананами - ваше дело. Технически доступиться до гаек и бананов - можно.

А вот то что некто может нисколько не сомневаясь засуммировать одно и другое и даже что-то на выход вернуть - вот это уже баг, а не фича. Т.к. програмер накосячит и не заметит нифига. Ну а что, чего-то же посчиталось!

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

136. "Релиз компилятора Python - Nuitka 0.4.2"  +/
Сообщение от 123 (??), 02-Апр-13, 10:25 
"...Для си вообще до балды на самом деле какие там типы..."

Задача не транслировать python в С, а транслировать в корректно работающую программу на C.


if <условие 1>:
  x, y = "123", "456"
elif <условие 2>:
  x, y = 123, 456
else:
  x, y = [1, 2, 3], [4, 5, 6]

z = x + y

Пример синтетический, но как это транслировать в C, которому "типы до балды"?

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

141. "Релиз компилятора Python - Nuitka 0.4.2"  +/
Сообщение от Аноним (-), 02-Апр-13, 18:28 

python_type *x, *y, *z;
if (<условие 1>){
  x = new_python_string("123");
  y = new_python_string("456");
} else if (<условие 2>) {
  x = new_python_int(123);
  y = new_python_int(456);
} else {
  x = new_python_dict(new_python_int(1),new_python_int(2),new_python_int(3));
  y = new_python_dict(new_python_int(4),new_python_int(5),new_python_int(6));
}
z = get_python_method(x,"__add__")(y);

Синтетическому примеру — синтетическое решение. Описания типа python_type и реализации функций не привожу, ибо принцип уже описан в примерах выше.
Ответить | Правка | Наверх | Cообщить модератору

78. "Релиз компилятора Python - Nuitka 0.4.2"  +/
Сообщение от Аноним (-), 01-Апр-13, 12:16 
>Когда люди пытаются компилить язык с динамической типизцией, неизбежно возникает необходимость предсказания типов и перекомпиляции, в случае если изначально тип был определён неверно.

Вы путаете слабую типизацию с динамической. Вот например в Си слабая, статическая, явная типизация. И там возможны ошибки о которых вы говорите.

А в Python строгая, динамическая, неявная типизация, и приведение одного типа к другому возможно только через специальные функции, да и то не всегда.


>А всё из-за того что люди не хотят мириться с тем, что он тормозит, вместо того чтобы учить более производитеьные решения.

Да! Почти не осталось людей, которые пишут на fortran и в машинных кодах.

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

123. "Релиз компилятора Python - Nuitka 0.4.2"  +/
Сообщение от Аноним (-), 02-Апр-13, 05:19 
> Да! Почти не осталось людей, которые пишут на fortran и в машинных кодах.

То-то все критичные места в кодеках и тому подобном на ассемблере выписаны. Оно и понятно - если голову засунуть в бидон то кажется что весь мир состоит только из этого бидона.

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

130. "Релиз компилятора Python - Nuitka 0.4.2"  +/
Сообщение от бедный буратино (ok), 02-Апр-13, 05:42 
>> Да! Почти не осталось людей, которые пишут на fortran и в машинных кодах.
> То-то все критичные места в кодеках и тому подобном на ассемблере выписаны.
> Оно и понятно - если голову засунуть в бидон то кажется что весь мир состоит только из этого бидона.

Кодеки пишут специально созданные для этого люди. У обычных людей в жизни совсем другая цель.

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

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

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




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

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