LINUX.ORG.RU

Ответ на: комментарий от imul

Ну нет в C типа bool но для битовой логики 1 и 0 вполне достаточно. Из Python надо вызывать C функции и получать результат. Потому в таких случаях есть автоматическое приведение типов. Это в Го нельзя написать 1+0.1

dem ★★
()
Ответ на: комментарий от i-rinat

Обычно на такие вопросы хорошо отвечают интроверты с легкой формой аутизма.

Те, которые, как правило, математику хорошо учили, а не строили из себя «киберпанков».

То есть, условные «жопыч1-куны» сразу из альфа-мачо превращаются в бубнящих омежек.

А ботаники, наоборот, начинают увлекаться и не обращают внимания на свою социофобию.

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 1)
Ответ на: комментарий от Harald

но услышать разумное объяснение про 256 было бы интересно

cast @mironov_ivan

В общем, ничего там разумного нет, как и ожидалось. Оптимизацию для маленьких чисел добавили очень давно (https://github.com/python/cpython/commit/842d2ccdcd540399501a918b9724d2eaf5599f39), и там было [-1; 99]. Очевидно, с потолка.

Потом было https://bugs.python.org/issue561244, где автор патча нашёл «-2, -3, …» в стандартной библиотеке, и решил оттянуть нижнюю границу до -5.

Потом было https://bugs.python.org/issue1436243, где автор решил растянуть диапазон до [0; 255], чтобы влезали значения байтов. Один из комментаторов предложил добавить 256, и его добавили. Вот просто так, без обсуждений. «— А добавь ещё 256 туда. — Добавил.»

i-rinat ★★★★★
()
Ответ на: комментарий от dem

Ну нет в C типа bool но для битовой логики 1 и 0 вполне достаточно.

Точно?
$ cat test.c
#include <stdio.h>
#define FALSE 0
#define TRUE 1
void main(void) { printf(«%d\n», TRUE==~FALSE?TRUE:FALSE);}

mike@pet ~/aaaa $ ./test
0

imul ★★★★★
()
Ответ на: комментарий от dem

Ну нет в C типа bool

А ты точно читал что написано по ссылке, которую ты сам же и запостил?

Deleted
()
Ответ на: комментарий от imul

Может мне еще станцевать тебе? Если у тебя есть возражения излагай.

dem ★★
()
Ответ на: комментарий от dem

Может мне еще станцевать тебе?

Если тебе ничего не мешает быть хорошим танцором, то можешь и станцевать.

Если у тебя есть возражения излагай.

Я уже их изложил в примере Кратко о том, почему питон - идеальный язык программирования (комментарий)

Что сказать хочешь?

Не, наоборот хочу от тебя услышать что-либо про: Кратко о том, почему питон - идеальный язык программирования (комментарий)
-- детали реализации например.

imul ★★★★★
()
Ответ на: комментарий от ptarh

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

bread
()
Ответ на: комментарий от i-rinat

Ну блин давай туда вкоммити чтонибудь такое же..

dem ★★
()
Ответ на: комментарий от i-rinat

В багтрекере можно найти патч, где предлагалась аналогичная оптимизация

Что-то не особо помогают эти оптимизации. Хотя если без них питон еще на порядок тормознее или выделяет на порядок больше памяти, то может и правильно сделали. Какая-то причина все-таки была, не только тараканы в голове Гвидо надеюсь.

bread
()
Ответ на: комментарий от i-rinat

В общем, ничего там разумного нет, как и ожидалось.

Вполне разумно на самом деле, если измеряли насколько такая оптимизация оптимизирует.

bread
()
Ответ на: комментарий от bread

Ты не прочитал обсуждения в нитке. Обсуждалась разумность выбора верхней границы (256 вместо 255), а не разумность оптимизации мелких чисел. Оптимизация-то вполне заметно на скорость выполнения кода влияет.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

256 одно из магических чисел у айтишников, и вполне может достаточно часто встречаться. Ну могли бы и до 1024 добить, чего уж там.

bread
()
Ответ на: комментарий от i-rinat

Все равно питон мегатормоз, так что пофиг.

bread
()
Ответ на: комментарий от Harald

В Java есть похожее для boxed целочисленных типов.

KivApple ★★★★★
()
Ответ на: комментарий от Bioreactor

и вторая часть

java.lang.reflect.Field f = Integer.class.getDeclaredField("value");
f.setAccessible(true);
f.set(Integer.valueOf(2), 3);

Integer i = 2;
System.out.println(i+i);

TheAnonymous ★★★★★
()
>>> a = 257
>>> b = 257
>>> a is b
False
>>> a, b = 257, 257
>>> a is b
True
ivn86
()
Ответ на: комментарий от Bioreactor

интроверты

аутизма

социофобию

я надеюсь, ты в курсе, что это совершенно разные и малосвязанные между собой вещи?

eternal_sorrow ★★★★★
()
Ответ на: комментарий от imul

Что-то я совсем потерял всякую суть спора.

Кстати, а зачем в примере оператор " ? : "? Можно было бы просто написать TRUE == ~FALSE, результат был бы тот же.

luke ★★★★★
()
Ответ на: комментарий от luke

Да нет никакого спора. Мне просто было интересно узнать детали реализации булевского типа в разных языках. Особенно там, где это объект. В сишке я могу и в асемблерный лист глянуть. Ничего необычного для себя я там не увижу.

Кстати, а зачем в примере оператор " ? : "?

Чтобы printf вывел любое значение которое можно определить дефайном, а не то, которое реализация компилятора использует в качестве представления логического нуля и логической единицы. Но, ты прав, в примере было лишним.
Про printf («%d\n%d\n», (1==1)==(~0), (1==1)==((~0)&1)); я тоже в курсе. :)

imul ★★★★★
()
Ответ на: комментарий от rsync

знаешь, как мне гворил мой куратор на одной из работ, когда я только осваивал питон? если аттрибут начинается с _, то трогать его нельзя. а если с __, то тем более нельзя.

eternal_sorrow ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.