|
2.7, Аноним (7), 10:58, 08/01/2022 [^] [^^] [^^^] [ответить]
| +10 +/– |
ирония в том, что стандартный интерпретатор написан на Си, и очень много питоновских фич работают шустро благодаря именно его оптимизации
| |
|
3.97, rshadow (ok), 19:42, 08/01/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
Да большинство языков так. А потом делают отдельный проект с реализацией интерпретатора языка на самом же языке.
| |
|
4.136, Мира (ok), 18:48, 09/01/2022 [^] [^^] [^^^] [ответить]
| –2 +/– |
PyPy не написан на Python. Он написан на RPython, который транслирован в C и скомпилирован.
| |
|
5.137, Аноним (-), 19:23, 09/01/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
> PyPy не написан на Python. Он написан на RPython, который транслирован в C и скомпилирован.
Ыксперты, мля ...
PyPy JIT написан на подмножестве питона (RPython), который напрямую генерирует машинный код:
https://github.com/reingart/pypy/blob/master/rpython/jit/backend/x86/assembler
if IS_X86_64:
mc.MOV_rs(esi.value, WORD*2)
# push first arg
mc.MOV_rr(edi.value, ebp.value)
align = callbuilder.align_stack_words(1)
mc.SUB_ri(esp.value, (align - 1) * WORD)
| |
|
|
3.116, vitalif (ok), 01:05, 09/01/2022 [^] [^^] [^^^] [ответить]
| –3 +/– |
шустро cpython не работает. он раз в 10 медленнее node.js. шустро работает только pypy
| |
|
4.119, myhand (ok), 04:09, 09/01/2022 [^] [^^] [^^^] [ответить]
| +4 +/– |
Моя думать, что твоя всерьез целочисленную арифметику не использовал. Твоя поймет как pypy может сосать.
| |
|
5.132, vitalif (ok), 15:38, 09/01/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
Ну всё правильно, tracing jit... Прирост максимальный там, где один и тот же блок кода выполняется очень много раз. Ноду не переплюнут, гугл хорошо постарался :-)
| |
|
6.147, n00by (ok), 11:55, 10/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
emerge это утилита для "установки пакетов" типа apt. Строит граф зависимостей и обсчитывает его рекурсивно, то есть в цикле.
| |
|
|
|
|
2.21, Анонн (?), 11:43, 08/01/2022 [^] [^^] [^^^] [ответить]
| +14 +/– |
Ты кроме заголовка ничего не читал?
Прямо же в новости написано "При этом проблемы с запятыми не специфичны для Python и часто всплывают в проектах на C/C++" и ссылки на фиксы! Зато первым отметился...
| |
|
3.34, Аноним (34), 13:10, 08/01/2022 [^] [^^] [^^^] [ответить]
| +15 +/– |
90% комментаторов тут такие, даже противно стало заходить в комменты.
| |
|
4.95, Аноним (95), 19:30, 08/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
> стало
Как будто когда-то на опеннете было иначе. Стадо пикейных жилетов перетирают одну и ту же воду о том, как всё раньше было хорошо, как сейчас всё плохо и как молодёжь вся подряд смузихлёбы и спирт не пьёт после смены в машзале.
| |
|
3.44, Аноним (-), 13:34, 08/01/2022 [^] [^^] [^^^] [ответить]
| –2 +/– |
проблемы с запятыми в си сильно зависят от компиляторов, в неправильных компиляторах часто пробел как ошибка
| |
|
4.46, Аноним84701 (ok), 13:39, 08/01/2022 [^] [^^] [^^^] [ответить]
| +9 +/– |
>> Случайно пропущенная запятая в списках, кортежах и множествах, приводящая к объединению строк вместо их интерпретации как отдельных значений
> проблемы с запятыми в си сильно зависят от компиляторов, в неправильных компиляторах часто пробел как ошибка
$ echo '#include<stdio.h>
int main(void) { return puts("привет" "анонимно""параллельный" "мир");}'| gcc -Wall -Wextra -xc -oнашареальность - && ./нашареальность
приветанонимнопараллельныймир
(ISO/IEC 9899:TC3): " 6. Adjacent string literal tokens are concatenated."
Хорошо вам там, в параллельной вселенной! А в нашей реальности все немного по другому :(
| |
|
5.57, Аноним (57), 14:28, 08/01/2022 [^] [^^] [^^^] [ответить]
| –7 +/– |
Да ты ещё трусы на голову надень, чтобы тебе удобней было, и всё будет хорошо, но только для тебя.
Никогда не пиши код, который оформлен, как в твоём примере, ибо это признак того, что программист - чудак на букву "м" и программирует только для себя.
| |
|
6.62, Аноним84701 (ok), 14:41, 08/01/2022 [^] [^^] [^^^] [ответить]
| +6 +/– |
>>> в неправильных компиляторах часто пробел как ошибка
>> цитата ISO C99 плюс простейший пример прямо в шелл
> Да ты ещё трусы на голову надень, чтобы тебе удобней было, и всё будет хорошо, но только для тебя.
Спешу Вас огорчить -- в нашей реальности ношение трусов на голове как-то не способствует изменению стандарта ЯП.
Так что Ваш опыт нам не подходит, увы :(
> Никогда не пиши код, который оформлен, как в твоём примере, ибо это признак того, что программист - чудак на букву "м"
Какая унылая попытка перевести стрелки ...
| |
6.126, n00by (ok), 12:08, 09/01/2022 [^] [^^] [^^^] [ответить]
| –1 +/– |
Лучше бы написали, что там return лишний, а стало быть множество электронов напрасно пострадало от эксперимента. ;)
| |
|
5.68, Аноним (68), 15:05, 08/01/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
Справедливости ради, с puts() ошибиться не получится - запятые она не примет. И с printf тоже - количество стрингов, если пропустить запятые, не будет совпадать с тем, что в строке-шаблоне.
А вот в питоне беда с этими кортежами и массивами. Вот из недавнего:
Image.open(fname).convert(mode) вернёт 3х мерный массив, если mode='RGB', и двухмерный, если mode='L'. Где логика?
| |
|
6.96, Ordu (ok), 19:38, 08/01/2022 [^] [^^] [^^^] [ответить] | +/– | Не примет, да Похрен Ругнётся варнингом, но скомпилирует В функцию с эллипсис... большой текст свёрнут, показать | |
6.100, Anonymoustus (ok), 19:57, 08/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
> с puts() ошибиться
Опытные собаководы рекомендуют функции на f:
[CODE]
fputs()
fscanf()
fprintf()
[/CODE]
и т. п.
| |
|
5.79, pavlinux (ok), 16:09, 08/01/2022 [^] [^^] [^^^] [ответить]
| –3 +/– |
Детская попытка высера.
> puts("привет"
...
В C можно нах...ячить так, что ни одни парсер, анализатор, человек не вдуплят.
#include<stdio.h>
int main(void) {
int value = 1;
return printf("value %d" "value+1 %d", "value +2 %d\n", value, value+1, value+2);
}
$ ./a.out
value -412667900 value+1 1
Рекомендую для старта: grep -R va_list /usr/include/
А не выёб... гуглением стандартов.
| |
|
6.81, Аноним (81), 16:18, 08/01/2022 [^] [^^] [^^^] [ответить]
| +4 +/– |
Ты просто усложнил пример, не показав ничего нового. Зато как наехать так сразу.
| |
|
7.84, pavlinux (ok), 16:28, 08/01/2022 [^] [^^] [^^^] [ответить]
| –2 +/– |
> Рекомендую перед
Я ж говорю, завязывай с дpoчиловом на идеальный мир ...
Сходи на хитбаб, ознакомься как в реaльном мире живут с -W -Wall -Wextra -petantic -ansi -Wstrict- .... итп
Такой муйнёй занимаются только домашние хелловордисты. :D
Когда у тебя в проекте заняты 50 человек, 5-6 языков, три платформы, 4 аппаратные арх.
личные тикеты расписаны до ноября 2022 года ... те не до рассматривания срача от -Wall -Wextra
| |
|
8.98, user (??), 19:44, 08/01/2022 [^] [^^] [^^^] [ответить] | +/– | Что мешает добавить второй способ сборки и спокойно там ковыряться когда время е... текст свёрнут, показать | |
|
|
6.111, _kp (ok), 22:01, 08/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
int main[-1]; //это корректный однострочник на Си с интересным эффектом ;)
| |
|
|
|
3.56, Аноним (57), 14:26, 08/01/2022 [^] [^^] [^^^] [ответить]
| –1 +/– |
Это каким дундуком надо быть, чтобы на Си не ставить запятые? У Си вообще самый удобный синтаксис, просто писать на нём надо так, чтобы программа была прозрачной, а не хитровыеб-ной, чтоб "никто не догадался".
Лгут эти тестировщики.
| |
|
|
|
|
3.39, uis (ok), 13:27, 08/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
Дьявол кроется в мелочах. Возможно они латентные растоманы.
| |
|
4.133, Skif (ok), 15:50, 09/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
Не плачь, юный падавал, с тобой ML и DS, async и ...не, про GIL не будем. А ещё хорошая сетка зарплат, востребованность и зависть непитонистов.
| |
|
|
|
1.3, Онаним (?), 10:46, 08/01/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +7 +/– |
А сколько их, связанных с пропущенными пробелами, даже представить страшно.
| |
|
2.9, Аноним (7), 11:02, 08/01/2022 [^] [^^] [^^^] [ответить]
| –4 +/– |
не страшно, Ваганыч, тк на пробелы ругнется компилятор байт-кода
| |
2.33, Аноним (33), 13:08, 08/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
Не так опасно. Они же не файлы конфигурации для модного нетплана пишут.
| |
|
3.61, Аноним (61), 14:39, 08/01/2022 [^] [^^] [^^^] [ответить]
| +3 +/– |
Хуже - они их парсер пишут.
В котором, к примеру, кусок внутри if оказался снаружи из-за быстрой копипасты без сдвига.
Поэтому оно типа работает, но не так как ожидал копипастер. И никакой анализатор тут не поможет.
| |
|
|
|
2.85, Аноним (85), 16:35, 08/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
Одно дело когда ты думал-думал и надумал не ставить запятую, и совсем другое когда ты по невнимательности ее не поставил.
А ЯП это пропускает.
| |
|
1.12, Аноним (12), 11:12, 08/01/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Вообще забавно, с пропущенной между строками запятой это прямо жиза. Сомневаюсь конечно, что кто-нибудь пропускает запятую в кортеже или добавляет в конце (разве что те, кто никогда не юзал питон прежде, потому что это анриал). Поэтому обычно элементы списков разделяют построчно. То, что ошибки обнаружили только в шляпных проектах, довольно показательно.
| |
1.16, Аноним (16), 11:27, 08/01/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
Просто на лицо бескультурная разработка. На прекомите или хотябы в ci должен крутиться линтер(pylint/flake8/black), который все это безобразие не допустит. А с использованием mypy и внедрением type-хинтов ошибок будет выявлено еще больше. Проблема как обычно в людях..
| |
|
2.50, Аноним (50), 14:00, 08/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
Так открывай свой старап линьт питоновские репо за свои деньги.
| |
2.64, Аноним (85), 14:49, 08/01/2022 [^] [^^] [^^^] [ответить]
| +2 +/– |
Больше похоже на сомнительную фичу языка. Если она к таким ошибкам приводит, а выгоды от ее использования практически и нет.
| |
|
1.19, Аноним (19), 11:38, 08/01/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +3 +/– |
values = (1,)
ааа... да. я помню было наоборот. когда силами копипасты из строки вида "a, b, c, ..." в коде получается вот такое
def some_method(self, a, b, c):
self.a = a,
self.b = b,
self.c = c,
и забываешь про эти запятые, темболее никто на синтаксис не ругается. но в процессе работы с этими переменными тщетно силишься понять почему они кортеж, темболее если это датакласс в другом файле который на глаза не попадается.
очевидно под подозрением становятся аргументы метода, особенно если аргументы получаешь из недоверяемого апи. часа полтора дебага.
| |
|
2.26, Аноним (12), 12:19, 08/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
Вот не надо, это очень годные фичи. Например, когда у тебя длинная строка, ты разбиваешь её на несколько строк и при этом она сохраняет форматирование и остаётся читаемой. Из пальца высосали.
| |
|
3.31, Аноним (31), 12:54, 08/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
В нормальных языках строки объединяются специальным оператором, отличным от пробела. Так что если забудешь поставить запятую, то компилятор/интерпретатор ругнётся.
| |
|
|
5.124, . (?), 10:13, 09/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
Ну, скажем так - устаревший на сорок лет. Ему (как и Си) простительно - компьютеры были большие, код простым, мощности надо было экономить, а ломать совместимость нельзя.
Нескучному язычку ломающему совместимость раз в год "патамуштамагем" - как бы не.
А, ну да, ну да - зато у нас есть PEP!
| |
|
|
5.118, Аноним (31), 01:18, 09/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
В пхп - точка; в джаваскрипт - плюс; в ди, если не ошибаюсь, тильда.
| |
|
4.135, userd (ok), 17:25, 09/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
> В нормальных языках строки объединяются специальным оператором, отличным от пробела.
В python есть специальный оператор - это '+'.
Конкатенация смежных литералов - https://docs.python.org/3/reference/lexical_analysis.html#string-literal-conca , вероятно, заимствована из C.
оставим C (вместе с AWK, SNOBOL и другими) на разбор знатокам. В python это скорее всего уже ненужный атавизм - когда-то компилятор был слаб и не умел сворачивать константы - 'a' 'b' обрабатывал во время компиляции, а 'a'+'b' - во время выполнения. Сейчас судя по dis.dis в коде в обоих случаях получается константа 'ab'.
| |
|
5.144, Аноним (31), 03:21, 10/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
Атавизм - не атавизм, но в итоге язык проглатывает пробелы без ошибок. Почему не убрали этот косяк при переходе на 3-ю версию, когда всё-равно обратную совместимость ломали?
| |
|
|
7.156, Аноним (31), 03:39, 11/01/2022 [^] [^^] [^^^] [ответить]
| +2 +/– |
Да мне глубоко накласть на ваши питонопроблемы с клиническим пробелодрочерством, когда есть более адекватные языки. Сами объясняйте друг-другу, почему вы не можете избавиться от грабель, на которые сами же постоянно и натыкаетесь. А мне в это болото лезть незачем.
Сначала сам же заявил про ненужный атавизм, потом отправил куда-то читать - почему он нужен...
| |
|
|
|
|
|
|
3.130, Аноня (?), 14:01, 09/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
Отделяй мух от котлет. Питоня как пхп - есть серьёзные проекты, типа твоего tensorflow, но есть и 95% школоты и вайтишек
| |
3.157, ptr (ok), 08:32, 11/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
TensorFlow написан на С++ с использованием CUDA. Для Python только API, причем наравне с API для других языков. Загляните в его исходники, если не верите
| |
|
|
|
|
3.49, Аноним (-), 14:00, 08/01/2022 [^] [^^] [^^^] [ответить]
| –3 +/– |
>> Это чё, в Питоне бланк между двумя строками - это конкатенация
> Не поверишь, в Си тоже
ты си то вообще видел хоть раз в жизни ?
| |
|
4.55, Siborgium (ok), 14:21, 08/01/2022 [^] [^^] [^^^] [ответить]
| +5 +/– |
$ cat - > main.c
#include <stdio.h>
int main(void) {
puts("Hello" " " "world");
return 0;
}
$ gcc main.c
$ ./a.out
Hello world
| |
|
5.75, Аноним (75), 15:24, 08/01/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
строго говоря, в си это используется только чтобы для удобства чтения разбить очень длинную строку на несколько, поскольку неявная конкатенация возможна только для строковых литералов. Во всех остальных случаях - будьте добры использовать str[n]cat, s[n]printf и т.д.
| |
|
6.105, Аноним (85), 21:13, 08/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
>сахарок конпелятора
Это прописано в стандарте Си. Называется "конкатенацией прилегающих строковых литералов"
Первую ветку комментариев почитай.
| |
6.106, Аноним (107), 21:23, 08/01/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
Конпелятор об этом сахарке ваще ничего не знает.
Конкатенация происходит *до* конпеляции.
| |
|
7.113, Аноним (113), 22:59, 08/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
буководрочка доводит до срача доказывания одного и того же. желаете продолжить ? y/N: _
| |
7.143, Ordu (ok), 02:12, 10/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
> Конпелятор об этом сахарке ваще ничего не знает.
> Конкатенация происходит *до* конпеляции.
Забавное высказывание. Если компилятор об этом сахарке ничего не знает, то кто производит desugaring? (хм... расслащивание?)
| |
|
8.149, n00by (ok), 12:04, 10/01/2022 [^] [^^] [^^^] [ответить] | +/– | Так по стандарту вообще нет компилятора, есть фазы трансляции, где выделен препр... текст свёрнут, показать | |
|
9.152, Ordu (ok), 17:52, 10/01/2022 [^] [^^] [^^^] [ответить] | +2 +/– | Если заниматься буквоедством, то при таких вводных, фраза компилятор не знает ... текст свёрнут, показать | |
|
|
|
|
5.158, ptr (ok), 08:49, 11/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
Для GCC, чтобы тут не попасться, можно использовать -Wtraditional. А что использовать для Python?
| |
|
6.160, ptr (ok), 03:27, 12/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
> Для GCC, чтобы тут не попасться, можно использовать -Wtraditional. А что использовать
> для Python?
Просто штатный ключ компиляции и статический анализатор кода - это все же различные вещи.
Линтер использовать проблематично при написании скриптов для встроенного в какое-то приложение Python. Да запретить пушить недописанный код в git - усложнить регулярное резервное копирование исходников, которое при пуше выполняется автоматически.
| |
|
|
|
|
|
1.45, uis (ok), 13:34, 08/01/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Я даже знаю, где один из таких репозиториев на гх - YosysHQ/prjtrellis ЕМНИП.
PR с исправлением около полу года висит, хотя может уже приняли.
| |
|
2.90, ананоша (?), 17:31, 08/01/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
Мы приняли очень лёгкое решение назначить вас тимлидом в тензорфлоу
| |
|
1.69, Sergey (??), 15:07, 08/01/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Так не понятно, эти проги с багами что ли и они не работают ? Ну напишите разрабам и они это закроют.
| |
|
2.150, Аноним (134), 13:51, 10/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
действительно, никто не парится, что там на коленке работает или не работает у студента на хомяке
| |
|
1.115, kai3341 (ok), 23:06, 08/01/2022 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Эм. Я смею заметить, что многих ошибок можно было легко избежать, если бы соблюдалось хотя бы PEP8. Знаете, сколько раз я тыкал носом и заставлял писать каждый элемент списка на отдельной строке? Сколько раз я возмущался, что 2 коротких элемента в одной строке не читаются?
А сколько раз константные списки просил выносить из функций наружу?
| |
|
2.122, угу (?), 07:51, 09/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
Язык г-но и псевдокомпилятор ничего не проверяет - поэтому мы просто запритим-запритим ниправильные-ниправильные, плахие стили кодинга - вместо того чтобы этим занималась собственно языковая среда. И потом будем плакать, потому что опять какой-то гад нисаблюл.
Причем от уже процитированного выше self.a=a,
никак не защищает.
| |
|
3.127, Аноним (-), 13:05, 09/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
> Язык г-но и псевдокомпилятор ничего не проверяет - поэтому мы просто запритим-запритим
> ниправильные-ниправильные, плахие стили кодинга - вместо того чтобы этим занималась собственно
> языковая среда. И потом будем плакать, потому что опять какой-то гад нисаблюл.
>> При этом проблемы с запятыми не специфичны для Python и часто всплывают в проектах на C/C++
А, ну да, "Вынипонимаити! Это другое!"
| |
3.138, Аноним (12), 20:00, 09/01/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
После шелла збс, в нём пропустил пробел и о том, что тебе очко порвало, ты узнаешь через полгода, не раньше.
| |
|
4.153, kai3341 (ok), 18:37, 10/01/2022 [^] [^^] [^^^] [ответить]
| +/– |
> После шелла збс, в нём пропустил пробел и о том, что тебе очко порвало, ты узнаешь через полгода, не раньше.
true story =(
| |
|
|
|
|
2.146, Простоник (ok), 11:01, 10/01/2022 [^] [^^] [^^^] [ответить]
| +4 +/– |
Наоборот. Индустрия требует большего количества людей. Но вот процент разумных всегда примерно одинаков, их больше не становится. Значит приходится привлекать и менее способных. Вот потому и python...
| |
|
|