The OpenNET Project / Index page

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



"В 3.6% протестированных Python-репозиториев выявлены ошибки, связанные с пропущенными запятыми"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"В 3.6% протестированных Python-репозиториев выявлены ошибки, связанные с пропущенными запятыми"  +/
Сообщение от opennews (??), 08-Янв-22, 10:43 
Опубликованы результаты исследования подверженности кода на языке Python ошибкам, связанным с некорректным использованием запятых в коде. Проблемы вызваны тем, что при перечислениях Python автоматически объединяет строки в списке, если они не разделены запятой, а также обрабатывает значение, как кортеж, если после значения следует запятая. Проведя автоматизированный анализ 666  GitHub-репозиториев с кодом на языке Python исследователи выявили возможные проблемы с запятыми в 5% изученных проектов...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=56470

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

Оглавление

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

1. Сообщение от Аноним (1), 08-Янв-22, 10:43   –7 +/
Это вам не сишка!
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #7, #21

2. Сообщение от макпыф (ok), 08-Янв-22, 10:46   +3 +/
> Проведя анализ 666 GitHub-репозиториев

Они сатанисты?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #15, #58, #134, #162

3. Сообщение от Онаним (?), 08-Янв-22, 10:46   +7 +/
А сколько их, связанных с пропущенными пробелами, даже представить страшно.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #9, #33, #71

4. Сообщение от Аноним (4), 08-Янв-22, 10:46   –4 +/
Нельзя казнить помиловать
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #5, #107

5. Сообщение от Аноним (5), 08-Янв-22, 10:47   +8 +/
Казнить нельзя помиловать
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #10

6. Сообщение от Аноним (6), 08-Янв-22, 10:49   –13 +/
В том числе и поэтому, человека, который утверждает, что он программист на питоне, гнать надо сразу с порога. Да и вообще, с подозрением относиться к тем, у кого этот ЯП в резюме указан.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #11, #14, #20, #63

7. Сообщение от Анонимemail (7), 08-Янв-22, 10:58   +10 +/
ирония в том, что стандартный интерпретатор написан на Си, и очень много питоновских фич работают шустро благодаря именно его оптимизации
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #97, #109, #116

8. Сообщение от Аноним (8), 08-Янв-22, 11:00   +1 +/
вайти в айти
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #38, #85

9. Сообщение от Анонимemail (7), 08-Янв-22, 11:02   –4 +/
не страшно, Ваганыч, тк на пробелы ругнется компилятор байт-кода
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

10. Сообщение от Анонимemail (7), 08-Янв-22, 11:06   +9 +/
писать комментарии на OpenNET необязательно думать
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #25

11. Сообщение от Анонимemail (7), 08-Янв-22, 11:07   +2 +/
скриптота лишней не будет в резюме, это точно
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #18

12. Сообщение от Аноним (12), 08-Янв-22, 11:12   +/
Вообще забавно, с пропущенной между строками запятой это прямо жиза. Сомневаюсь конечно, что кто-нибудь пропускает запятую в кортеже или добавляет в конце (разве что те, кто никогда не юзал питон прежде, потому что это анриал). Поэтому обычно элементы списков разделяют построчно. То, что ошибки обнаружили только в шляпных проектах, довольно показательно.
Ответить | Правка | Наверх | Cообщить модератору

14. Сообщение от Аноним (14), 08-Янв-22, 11:19   +3 +/
Немножко логика хромала, но я всё чётко объяснил
Нажав на кнопочку Отправить, камент я важный разместил
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

15. Сообщение от Аноним (15), 08-Янв-22, 11:25   +28 +/
Хуже, они — питонисты.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #39, #129

16. Сообщение от Аноним (16), 08-Янв-22, 11:27   +2 +/
Просто на лицо бескультурная разработка. На прекомите или хотябы в ci должен крутиться линтер(pylint/flake8/black), который все это безобразие не допустит. А с использованием mypy и внедрением type-хинтов ошибок будет выявлено еще больше. Проблема как обычно в людях..
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #50, #64

18. Сообщение от Аноним (-), 08-Янв-22, 11:38   +/
bash, ruby, go?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #29

19. Сообщение от Аноним (19), 08-Янв-22, 11:38   +3 +/
values = (1,)
ааа... да. я помню было наоборот. когда  силами копипасты из строки вида "a, b, c, ..."  в коде получается вот такое
def some_method(self, a, b, c):
  self.a = a,
  self.b = b,
  self.c = c,
и забываешь про эти запятые, темболее никто на синтаксис не ругается. но в процессе работы с этими переменными тщетно силишься понять почему они кортеж, темболее если это датакласс в другом файле который на глаза не попадается.
очевидно под подозрением становятся аргументы метода, особенно если аргументы получаешь из недоверяемого апи. часа полтора дебага.
Ответить | Правка | Наверх | Cообщить модератору

20. Сообщение от Аноним (20), 08-Янв-22, 11:43   +2 +/
покажи свой гитхаб, трепло, посмотрим, какой ты программист
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #22, #48, #53

21. Сообщение от Анонн (?), 08-Янв-22, 11:43   +14 +/
Ты кроме заголовка ничего не читал?
Прямо же в новости написано "При этом проблемы с запятыми не специфичны для Python и часто всплывают в проектах на C/C++" и ссылки на фиксы! Зато первым отметился...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #34, #44, #56

22. Сообщение от Аноним (22), 08-Янв-22, 11:57   +2 +/
>гитхаб
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20 Ответы: #59

24. Сообщение от Аскольд (ok), 08-Янв-22, 12:05   –2 +/
питоноидный школодром as is
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #26, #28

25. Сообщение от Аноним (25), 08-Янв-22, 12:08   +/
писать комментарии на OpenNET необязательно, думать
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

26. Сообщение от Аноним (12), 08-Янв-22, 12:19   +/
Вот не надо, это очень годные фичи. Например, когда у тебя длинная строка, ты разбиваешь её на несколько строк и при этом она сохраняет форматирование и остаётся читаемой. Из пальца высосали.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24 Ответы: #31

27. Сообщение от Аноним (27), 08-Янв-22, 12:22   +5 +/
вот до чего отсутствие поцкаля в школьной программе доводит
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #35

28. Сообщение от anonymous (??), 08-Янв-22, 12:22   –1 +/
Авторы tensorflow -- это "школодром"?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24 Ответы: #66, #130, #157

29. Сообщение от YetAnotherOnanym (ok), 08-Янв-22, 12:35   +/
"sh, awk" же!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

30. Сообщение от YetAnotherOnanym (ok), 08-Янв-22, 12:43   –1 +/
Это чё, в Питоне бланк между двумя строками - это конкатенация? Тогда пропуск запятой непростителен.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #36

31. Сообщение от Аноним (31), 08-Янв-22, 12:54   +/
В нормальных языках строки объединяются специальным оператором, отличным от пробела. Так что если забудешь поставить запятую, то компилятор/интерпретатор ругнётся.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26 Ответы: #32, #41, #135

32. Сообщение от YetAnotherOnanym (ok), 08-Янв-22, 13:01   –1 +/
AWK, значит, ненормальный...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31 Ответы: #124

33. Сообщение от Аноним (33), 08-Янв-22, 13:08   +/
Не так опасно. Они же не файлы конфигурации для модного нетплана пишут.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #61

34. Сообщение от Аноним (34), 08-Янв-22, 13:10   +15 +/
90% комментаторов тут такие, даже противно стало заходить в комменты.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21 Ответы: #95

35. Сообщение от Аноним (33), 08-Янв-22, 13:11   –3 +/
Скорее его былое присутствие. Ибо диагноз.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27 Ответы: #42

36. Сообщение от Аноним (36), 08-Янв-22, 13:19   +1 +/
Не поверишь, в Си тоже
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30 Ответы: #49

38. Сообщение от Модный (?), 08-Янв-22, 13:22   +/
А чо не так? Да нормально.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8

39. Сообщение от uis (ok), 08-Янв-22, 13:27   +/
Дьявол кроется в мелочах. Возможно они латентные растоманы.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

40. Сообщение от Аноним (40), 08-Янв-22, 13:30   +/
я тоже пропускаю запятые...
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #128

41. Сообщение от uis (ok), 08-Янв-22, 13:31   +/
Например?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31 Ответы: #118

42. Сообщение от uis (ok), 08-Янв-22, 13:31   +/
Не, диагноз - это qbasic
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #35 Ответы: #47

44. Сообщение от Аноним (-), 08-Янв-22, 13:34   –2 +/
проблемы с запятыми в си сильно зависят от компиляторов, в неправильных компиляторах часто пробел как ошибка
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21 Ответы: #46

45. Сообщение от uis (ok), 08-Янв-22, 13:34   +/
Я даже знаю, где один из таких репозиториев на гх - YosysHQ/prjtrellis ЕМНИП.
PR с исправлением около полу года висит, хотя может уже приняли.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #52

46. Сообщение от Аноним84701 (ok), 08-Янв-22, 13:39   +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."

Хорошо вам там, в параллельной вселенной! А в нашей реальности все немного по другому :(

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44 Ответы: #57, #68, #79, #99

47. Сообщение от Аноним (47), 08-Янв-22, 13:56   +/
у qbasic вообще-то уже адекватный синтаксис был
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42

48. Сообщение от Аноним (-), 08-Янв-22, 13:57   +1 +/
> посмотрим, какой ты программист
> гитхаб

Вы что-то перепутали. Нормальные программисты "этим" не пользуются.

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

49. Сообщение от Аноним (-), 08-Янв-22, 14:00   –3 +/
>> Это чё, в Питоне бланк между двумя строками - это конкатенация
> Не поверишь, в Си тоже

ты си то вообще видел хоть раз в жизни ?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36 Ответы: #55

50. Сообщение от Аноним (50), 08-Янв-22, 14:00   +/
Так открывай свой старап линьт питоновские репо за свои деньги.  
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16

52. Сообщение от Аноним (50), 08-Янв-22, 14:01   +/
Если все итак работает то зачем?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45

53. Сообщение от Аноним (-), 08-Янв-22, 14:05   +/
сам найди, "программист".... Кроме git clone, небось, ничего больше и не знаешь....
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20

55. Сообщение от Siborgium (ok), 08-Янв-22, 14:21   +5 +/
    $ cat - > main.c
    #include <stdio.h>

    int main(void) {
        puts("Hello" " " "world");
        return 0;
    }
    $ gcc main.c
    $ ./a.out
    Hello world

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #49 Ответы: #75, #80, #103, #158

56. Сообщение от Аноним (57), 08-Янв-22, 14:26   –1 +/
Это каким дундуком надо быть, чтобы на Си не ставить запятые? У Си вообще самый удобный синтаксис, просто писать на нём надо так, чтобы программа была прозрачной, а не хитровыеб-ной, чтоб "никто не догадался".

Лгут эти тестировщики.

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

57. Сообщение от Аноним (57), 08-Янв-22, 14:28   –7 +/
Да ты ещё трусы на голову надень, чтобы тебе удобней было, и всё будет хорошо, но только для тебя.

Никогда не пиши код, который оформлен, как в твоём примере, ибо это признак того, что программист - чудак на букву "м" и программирует только для себя.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46 Ответы: #62, #126

58. Сообщение от OpenEcho (?), 08-Янв-22, 14:28   +1 +/
Но, они змеи, питоны
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

59. Сообщение от OpenEcho (?), 08-Янв-22, 14:33   +/
... достал из широких штанин
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22

60. Сообщение от Питонист (?), 08-Янв-22, 14:38   +/
```
for page in 'issues releases discover user-feedback'.split()
```
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #90

61. Сообщение от Аноним (61), 08-Янв-22, 14:39   +3 +/
Хуже - они их парсер пишут.
В котором, к примеру, кусок внутри if оказался снаружи из-за быстрой копипасты без сдвига.

Поэтому оно типа работает, но не так как ожидал копипастер. И никакой анализатор тут не поможет.

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

62. Сообщение от Аноним84701 (ok), 08-Янв-22, 14:41   +6 +/
>>> в неправильных компиляторах часто пробел как ошибка
>> цитата ISO C99 плюс простейший пример прямо в шелл
> Да ты ещё трусы на голову надень, чтобы тебе удобней было, и всё будет хорошо, но только для тебя.

Спешу Вас огорчить -- в нашей реальности ношение трусов на голове как-то не способствует изменению стандарта ЯП.
Так что Ваш опыт нам не подходит, увы :(

> Никогда не пиши код, который оформлен, как в твоём примере, ибо это признак того, что программист - чудак на букву "м"

Какая унылая попытка перевести стрелки ...

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

63. Сообщение от OpenEcho (?), 08-Янв-22, 14:41   +/
>  что он программист на питоне, гнать надо сразу с порога.

Писец ... NASA срочно останавливает проекты по обьективному совету анонима с опеннета

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #76

64. Сообщение от Аноним (85), 08-Янв-22, 14:49   +2 +/
Больше похоже на сомнительную фичу языка. Если она к таким ошибкам приводит, а выгоды от ее использования практически и нет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16

66. Сообщение от Аноним (50), 08-Янв-22, 14:59   +2 +/
А кто они по твоему?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28 Ответы: #70

67. Сообщение от Аноним (67), 08-Янв-22, 15:03   +/
Это они ещё пробелы не считали.
Ответить | Правка | Наверх | Cообщить модератору

68. Сообщение от Аноним (68), 08-Янв-22, 15:05   +1 +/
Справедливости ради, с puts() ошибиться не получится - запятые она не примет. И с printf тоже - количество стрингов, если пропустить запятые, не будет совпадать с тем, что в строке-шаблоне.
А вот в питоне беда с этими кортежами и массивами. Вот из недавнего:
Image.open(fname).convert(mode) вернёт 3х мерный массив, если mode='RGB', и двухмерный, если mode='L'. Где логика?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46 Ответы: #77, #96, #100

69. Сообщение от Sergey (??), 08-Янв-22, 15:07   +/
Так не понятно, эти проги с багами что ли и они не работают ? Ну напишите разрабам и они это закроют.
Ответить | Правка | Наверх | Cообщить модератору

70. Сообщение от Аноним (85), 08-Янв-22, 15:10   –1 +/
Тут можно на них посмотреть, и на их работы https://research.google/teams/brain/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #66

71. Сообщение от КО (?), 08-Янв-22, 15:16   –1 +/
Работает - не трогай
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #161

75. Сообщение от Аноним (75), 08-Янв-22, 15:24   +1 +/
строго говоря, в си это используется только чтобы для удобства чтения разбить очень длинную строку на несколько, поскольку неявная конкатенация возможна только для строковых литералов. Во всех остальных случаях - будьте добры использовать str[n]cat, s[n]printf и т.д.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #55 Ответы: #78, #88

76. Сообщение от Аноним (-), 08-Янв-22, 15:36   +/
Уж не этим ли обусловлено то, что NASA уже много лет не способна ничего разработать и нанимает частные компании для разработки новой техники целиком?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #63 Ответы: #89, #92, #102

77. Сообщение от Аноним84701 (ok), 08-Янв-22, 15:45   +/
> Справедливости ради, с puts() ошибиться не получится - запятые она не примет.
> И с printf тоже - количество стрингов, если пропустить запятые, не
> будет совпадать с тем, что в строке-шаблоне.

Ну, в новости приведены вполне реальные примеры ошибок:
https://github.com/EhsanKia/llvm-project/blob/21832121e112d9...


static const std::string DefaultIgnoredParameterTypeSuffixes =
...
                                 "ConstReverseIterator",
                                   "Const_Reverse_Iterator",
                                   "const_reverse_iterator"
                                   "Constreverseiterator",
                                   "constreverseiterator"
...

Что принципильно ничем не отличается от ["issues", "releases" "discover" ...] в
>>> Например, в Sentry в одном из тестов была пропущена запятая между строками "releases" и "discover" в списке, что привело к проверке несуществующего обработчика "/releasesdiscover"
>>>

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

78. Сообщение от Аноним (78), 08-Янв-22, 15:48   +4 +/
Не поверишь, в Питоне также
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #75 Ответы: #82

79. Сообщение от pavlinux (ok), 08-Янв-22, 16:09   –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/  
А не выёб... гуглением стандартов.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46 Ответы: #81, #83, #111

80. Сообщение от 123456789 (??), 08-Янв-22, 16:17   –2 +/
во-первых, это не "конкатенация"
во-вторых, только для compiletime
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #55

81. Сообщение от Аноним (81), 08-Янв-22, 16:18   +4 +/
Ты просто усложнил пример, не показав ничего нового. Зато как наехать так сразу.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #79

82. Сообщение от 123456789 (??), 08-Янв-22, 16:19   –2 +/
ну да, ну да, "также" пока не обернёшь в скобочки
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #78 Ответы: #110

83. Сообщение от Аноним84701 (ok), 08-Янв-22, 16:24   +/
> Детская попытка высера.
>> puts("привет"

 
#include<stdio.h>
int main(void) {
      int value = 0;
   return  printf("value %d", "value+1 %d", "text", value, value + 1);
}

> <stdin>: In function 'int main()':
> <stdin>:5:20: warning: format '%d' expects argument of type 'int', but argument 2 has type 'const char*' [-Wformat=]
> <stdin>:5:20: warning: too many arguments for format [-Wformat-extra-args]

О, демонстрация "как правильно, по взрослому"?

>>> проблемы с запятыми в си сильно зависят от компиляторов, в неправильных компиляторах часто пробел как ошибка
> Рекомендую для старта: grep -R va_list /usr/include/
> А не выёб... гуглением стандартов.

Рекомендую перед ваянием ответа читать тему целиком, а не пытаться выёб..., раздергивая на отдельные части.
ЗЫ:
И новость читать тоже желательно -- _реальные_ примеры для "не вдуплят" там тоже есть.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #79 Ответы: #84

84. Сообщение от pavlinux (ok), 08-Янв-22, 16:28   –2 +/
> Рекомендую перед

Я ж говорю, завязывай с дpoчиловом на идеальный мир ...
Сходи на хитбаб, ознакомься как в реaльном мире живут  с -W -Wall -Wextra  -petantic -ansi -Wstrict- .... итп


Такой муйнёй занимаются только домашние хелловордисты. :D

Когда у тебя в проекте заняты 50 человек, 5-6 языков, три платформы, 4 аппаратные арх.
личные тикеты расписаны до ноября 2022 года ... те не до рассматривания срача от -Wall -Wextra  

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #83 Ответы: #86, #98

85. Сообщение от Аноним (85), 08-Янв-22, 16:35   +/
Одно дело когда ты думал-думал и надумал не ставить запятую, и совсем другое когда ты по невнимательности ее не поставил.
А ЯП это пропускает.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8

86. Сообщение от Аноним84701 (ok), 08-Янв-22, 16:36   +1 +/
> Я ж говорю, завязывай с дpoчиловом на идеальный мир ... Сходи на

Я ж говорю, завязывай с чтением с помощью афедрона -- тебе в новости уже привели реальный пример, который не ловится никакими Wall (причем именно из-за стандарта), в отличие от.
И ответ, кстати, был на "в неправильных компиляторах часто пробел как ошибка", что прекрасно демонстрируется с помощью puts, но для этого нужно было читать глазами.

> Такой муйнёй занимаются только домашние хелловордисты. :D

"Отмазывайся теперь!" (с)

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

87. Сообщение от Аноним (-), 08-Янв-22, 16:44   +4 +/
Синтаксис языка простить нельзя осудить.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #104

88. Сообщение от YetAnotherOnanym (ok), 08-Янв-22, 17:09   +/
> будьте добры использовать str[n]cat,

Опередил.

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

89. Сообщение от OpenEcho (?), 08-Янв-22, 17:29   +/
> Уж не этим ли обусловлено...

Не, не этим, т.к. в том же JPL питон не последнюю роль играет

> уже много лет не способна ничего разработать

А кто же тогда готовит тех задания для частных компаний если не НАСА?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #76 Ответы: #93

90. Сообщение от ананоша (?), 08-Янв-22, 17:31   +1 +/
Мы приняли очень лёгкое решение назначить вас тимлидом в тензорфлоу
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #60

92. Сообщение от Не будь васяном (?), 08-Янв-22, 19:09   –1 +/
Свидетель загнивающего НАСА? 🤣 Как там фобос-в-грунте? Уже всё дно океана исследовал? Когда на Марс? А то марсоходы от загнивающего НАСА уже запарились годами по другой планете нарезать, пока скрепы в океанах тонут 🤣

Привет крайнему запуску Ангара-5, в котором роскосмос снова обгадился. Куда уж там НАСА ахахаха

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #76 Ответы: #94

93. Сообщение от Аноним (-), 08-Янв-22, 19:20   +/
> А кто же тогда готовит тех задания для частных компаний если не НАСА?

Питон для этого не нужен.


> Не, не этим, т.к. в том же JPL питон не последнюю роль играет

Есть достоверные сведения, что на питоне хоть что-то ответственное делают? Для OpenSource математики норма - R, Julia, но не Python.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #89 Ответы: #117

94. Сообщение от Аноним (94), 08-Янв-22, 19:23   +/
Зачем нам тут вспоминать что могла НАСА делать в 90-х, начале 2000-х годов? И питон она тогда точно не использовала.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #92

95. Сообщение от Аноним (95), 08-Янв-22, 19:30   +/
> стало

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

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

96. Сообщение от Ordu (ok), 08-Янв-22, 19:38   +/
> Справедливости ради, с puts() ошибиться не получится - запятые она не примет.

Не примет, да.

> И с printf тоже - количество стрингов, если пропустить запятые, не будет совпадать с тем, что в строке-шаблоне.

Похрен. Ругнётся варнингом, но скомпилирует. В функцию с эллипсисом, согласно стандарту, можно запихать сколько угодно аргументов. Варнинги -- это уже специальный костыль компилятора, который знает про printf и его форматную строку. Если ты напишешь свою реализацию printf, типа "myprintf", то варнингов не будет. gcc позволяет пометить свою функцию как "printf-like", чтоб выполнять проверку аргументов, но если в твоём printf'е будет свой собственный синтаксис форматной строки, то эта пометка лишь сделает ситуацию хуже.

> А вот в питоне беда с этими кортежами и массивами.

В C ровно такая же беда с массивами:

char* strs[8] = {"how", "many" "non-null", "strings" "in" "this", "array" "?"};

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

97. Сообщение от rshadow (ok), 08-Янв-22, 19:42   +1 +/
Да большинство языков так. А потом делают отдельный проект с реализацией интерпретатора языка на самом же языке.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7

98. Сообщение от user (??), 08-Янв-22, 19:44   +/
Что мешает добавить второй способ сборки и спокойно там ковыряться когда время есть?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #84

99. Сообщение от Anonymoustus (ok), 08-Янв-22, 19:54   +/
Однострочники на Сишечке — это прекрасно!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46

100. Сообщение от Anonymoustus (ok), 08-Янв-22, 19:57   +/
> с puts() ошибиться

Опытные собаководы рекомендуют функции на f:


fputs()

fscanf()

fprintf()

и т. п.

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

102. Сообщение от Аноним (-), 08-Янв-22, 20:06   –1 +/
> Уж не этим ли обусловлено то, что NASA уже много лет не способна

Роспил отдыхает. А ты на сишниках много нопилеш ? Их пару тушек на всю планету, высеров на гитхапе нету, хайпа фигайпа тоже, переделывают по тыщи раз одно и тоже, на таких бюджет не выделишь.

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

103. Сообщение от Аноним (-), 08-Янв-22, 20:41   +1 +/
>  puts("Hello" " " "world");

это сахарок конпелятора дурень

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #55 Ответы: #105, #106

104. Сообщение от Аноним (-), 08-Янв-22, 20:45   +1 +/
Синтаксис языка г..но нельзя этим пользоваться.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #87

105. Сообщение от Аноним (85), 08-Янв-22, 21:13   +/
>сахарок конпелятора

Это прописано в стандарте Си. Называется "конкатенацией прилегающих строковых литералов"
Первую ветку комментариев почитай.

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

106. Сообщение от Аноним (107), 08-Янв-22, 21:23   +1 +/
Конпелятор об этом сахарке ваще ничего не знает.
Конкатенация происходит *до* конпеляции.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #103 Ответы: #113, #143

107. Сообщение от Аноним (107), 08-Янв-22, 21:26   +/
дефис пропустил.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #112

108. Сообщение от T00 (?), 08-Янв-22, 21:30   +/
Берём паскаль и не паримся.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #150

109. Сообщение от Здрасьте (?), 08-Янв-22, 21:45   –3 +/
PyPy написан на Пайтоне и работает быстрее того, что написан на Си.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #123, #136

110. Сообщение от Здрасьте (?), 08-Янв-22, 21:50   +1 +/
Если обернёшь, ничего не изменится. Речь о ситуации, когда есть запятая, когда её нету, всё работает в точности, как  Си.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #82

111. Сообщение от _kp (ok), 08-Янв-22, 22:01   +/
int main[-1]; //это корректный однострочник на Си с интересным эффектом ;)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #79

112. Сообщение от Рмщъ (?), 08-Янв-22, 22:50   +1 +/
Тире
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #107

113. Сообщение от Аноним (113), 08-Янв-22, 22:59   +/
буководрочка доводит до срача доказывания одного и того же. желаете продолжить ? y/N: _
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #106

115. Сообщение от kai3341 (ok), 08-Янв-22, 23:06   –1 +/
Эм. Я смею заметить, что многих ошибок можно было легко избежать, если бы соблюдалось хотя бы PEP8. Знаете, сколько раз я тыкал носом и заставлял писать каждый элемент списка на отдельной строке? Сколько раз я возмущался, что 2 коротких элемента в одной строке не читаются?

А сколько раз константные списки просил выносить из функций наружу?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #120, #122

116. Сообщение от vitalif (ok), 09-Янв-22, 01:05   –3 +/
шустро cpython не работает. он раз в 10 медленнее node.js. шустро работает только pypy
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #119, #125

117. Сообщение от OpenEcho (?), 09-Янв-22, 01:16   +/
> Есть достоверные сведения, что на питоне хоть что-то ответственное делают?

Умение пользоваться гуглом может помочь вам быть не смешным:

https://code.nasa.gov/


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

118. Сообщение от Аноним (31), 09-Янв-22, 01:18   +/
В пхп - точка; в джаваскрипт - плюс; в ди, если не ошибаюсь, тильда.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #41

119. Сообщение от myhand (ok), 09-Янв-22, 04:09   +4 +/
Моя думать, что твоя всерьез целочисленную арифметику не использовал.  Твоя поймет как pypy может сосать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #116

120. Сообщение от myhand (ok), 09-Янв-22, 04:11   +1 +/
Нэ нада просить.  Нада по рукам чекером стиля бить.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #115

121. Сообщение от Аноним (121), 09-Янв-22, 04:35   +1 +/
Граммар-наци добрались до питона
Ответить | Правка | Наверх | Cообщить модератору

122. Сообщение от угу (?), 09-Янв-22, 07:51   +/
Язык г-но и псевдокомпилятор ничего не проверяет - поэтому мы просто запритим-запритим ниправильные-ниправильные, плахие стили кодинга - вместо того чтобы этим занималась собственно языковая среда. И потом будем плакать, потому что опять какой-то гад нисаблюл.

Причем от уже процитированного выше self.a=a,
никак не защищает.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #115 Ответы: #127, #138

123. Сообщение от trdm (ok), 09-Янв-22, 09:09   +1 +/
да никогда такого не будет и не было.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #109

124. Сообщение от . (?), 09-Янв-22, 10:13   +/
Ну, скажем так - устаревший на сорок лет. Ему (как и Си) простительно - компьютеры были большие, код простым, мощности надо было экономить, а ломать совместимость нельзя.

Нескучному язычку ломающему совместимость раз в год "патамуштамагем" - как бы не.

А, ну да, ну да - зато у нас есть PEP!

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

125. Сообщение от n00by (ok), 09-Янв-22, 12:02   +/
Мне тут разрекламировали этот PyPy, на синтетическом тесте показал ощутимый прирост. Перевёл на него emerge в Gentoo, не заметил разницы. Решил, что руки у меня кривые. Но нет, это так и у всех, всего на 35% ускоряет https://blogs.gentoo.org/mgorny/2020/10/06/speeding-up-emerg.../
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #116 Ответы: #132

126. Сообщение от n00by (ok), 09-Янв-22, 12:08   –1 +/
Лучше бы написали, что там return лишний, а стало быть множество электронов напрасно пострадало от эксперимента. ;)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57

127. Сообщение от Аноним (-), 09-Янв-22, 13:05   +/
> Язык г-но и псевдокомпилятор ничего не проверяет - поэтому мы просто запритим-запритим
> ниправильные-ниправильные, плахие стили кодинга - вместо того чтобы этим занималась собственно
> языковая среда. И потом будем плакать, потому что опять какой-то гад нисаблюл.
>> При этом проблемы с запятыми не специфичны для Python и часто всплывают в проектах на C/C++

А, ну да, "Вынипонимаити! Это другое!"

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

128. Сообщение от YetAnotherOnanym (ok), 09-Янв-22, 13:18   –1 +/
> "Здравствуйте! Меня зовут Аноним-с-опеннета, и я тоже пропускаю запятые..."

Пофиксил.

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

129. Сообщение от Senior Python Developer (?), 09-Янв-22, 13:56   +1 +/
Хнык-хнык, зачем абижаете, какие тут все токсичные душнилы, маааам
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15 Ответы: #133

130. Сообщение от Аноня (?), 09-Янв-22, 14:01   +/
Отделяй мух от котлет. Питоня как пхп - есть серьёзные проекты, типа твоего tensorflow, но есть и 95% школоты и вайтишек

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

131. Сообщение от Аноня (?), 09-Янв-22, 14:03   +/
Питон привёл в индустрию кучу левых людей.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #146, #148

132. Сообщение от vitalif (ok), 09-Янв-22, 15:38   +1 +/
Ну всё правильно, tracing jit... Прирост максимальный там, где один и тот же блок кода выполняется очень много раз. Ноду не переплюнут, гугл хорошо постарался :-)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #125 Ответы: #147

133. Сообщение от Skif (ok), 09-Янв-22, 15:50   +/
Не плачь, юный падавал, с тобой ML и DS, async и ...не, про GIL не будем. А ещё хорошая сетка зарплат, востребованность и зависть непитонистов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #129

134. Сообщение от Аноним (134), 09-Янв-22, 16:38   +/
Датасатанисты! Tensorflow жы
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

135. Сообщение от userd (ok), 09-Янв-22, 17:25   +/
> В нормальных языках строки объединяются специальным оператором, отличным от пробела.

В python есть специальный оператор - это '+'.
Конкатенация смежных литералов - https://docs.python.org/3/reference/lexical_analysis.html#st... , вероятно, заимствована из C.

оставим C (вместе с AWK, SNOBOL и другими) на разбор знатокам. В python это скорее всего уже ненужный атавизм - когда-то компилятор был слаб и не умел сворачивать константы -  'a' 'b' обрабатывал во время компиляции, а 'a'+'b' - во время выполнения. Сейчас судя по dis.dis в коде в обоих случаях получается константа 'ab'.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31 Ответы: #144

136. Сообщение от Мира (ok), 09-Янв-22, 18:48   –2 +/
PyPy не написан на Python. Он написан на RPython, который транслирован в C и скомпилирован.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #109 Ответы: #137

137. Сообщение от Аноним (-), 09-Янв-22, 19:23   +1 +/
> PyPy не написан на Python. Он написан на RPython, который транслирован в C и скомпилирован.

Ыксперты, мля ...
PyPy JIT написан на подмножестве питона (RPython), который напрямую генерирует машинный код:
https://github.com/reingart/pypy/blob/master/rpython/jit/bac...


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)

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

138. Сообщение от Аноним (12), 09-Янв-22, 20:00   +1 +/
После шелла збс, в нём пропустил пробел и о том, что тебе очко порвало, ты узнаешь через полгода, не раньше.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #122 Ответы: #153

139. Сообщение от Gogi (??), 09-Янв-22, 21:13   –2 +/
Какой шикарный г0вн0язык! Позволяет себе выстрелить в ногу вообще незаряженым пистолетом! :))))) ТАК ВАМ И НАДО!
Ответить | Правка | Наверх | Cообщить модератору

142. Сообщение от Аноним (142), 10-Янв-22, 00:44   +/
Кривописцы! )
Ответить | Правка | Наверх | Cообщить модератору

143. Сообщение от Ordu (ok), 10-Янв-22, 02:12   +/
> Конпелятор об этом сахарке ваще ничего не знает.
> Конкатенация происходит *до* конпеляции.

Забавное высказывание. Если компилятор об этом сахарке ничего не знает, то кто производит desugaring? (хм... расслащивание?)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #106 Ответы: #149

144. Сообщение от Аноним (31), 10-Янв-22, 03:21   +/
Атавизм - не атавизм, но в итоге язык проглатывает пробелы без ошибок. Почему не убрали этот косяк при переходе на 3-ю версию, когда всё-равно обратную совместимость ломали?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #135 Ответы: #145

145. Сообщение от userd (ok), 10-Янв-22, 09:47   +2 +/
Ты такой умный, сделай милость, поищи почему отбросили PEP-3126 (2007, сцуко, год)
https://www.python.org/dev/peps/pep-3126/

и чем закончилось обсуждение предложения Гвидо ван Рассума, наступившего на эти грабли и предложившего удалить конкатенацию смежных строчных литералов -  
https://mail.python.org/pipermail/python-ideas/2013-May/0205...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #144 Ответы: #156

146. Сообщение от Простоникemail (ok), 10-Янв-22, 11:01   +4 +/
Наоборот. Индустрия требует большего количества людей. Но вот процент разумных  всегда примерно одинаков, их больше не становится. Значит приходится привлекать и менее способных. Вот потому и python...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #131 Ответы: #154

147. Сообщение от n00by (ok), 10-Янв-22, 11:55   +/
emerge это утилита для "установки пакетов" типа apt. Строит граф зависимостей и обсчитывает его рекурсивно, то есть в цикле.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #132

148. Сообщение от commiethebeastie (ok), 10-Янв-22, 12:00   +1 +/
basic, fox pro, delphi, php, 1c, js, много таких.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #131

149. Сообщение от n00by (ok), 10-Янв-22, 12:04   +/
Так по стандарту вообще нет компилятора, есть фазы трансляции, где выделен препроцессор и линкер. Но по сути он прав:

6. Adjacent string literal tokens are concatenated.
7. White-space characters separating tokens are no longer significant. Each preprocessing token
is converted into a token. The resulting tokens are syntactically and semantically analyzed
and translated as a translation unit.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #143 Ответы: #152

150. Сообщение от Аноним (134), 10-Янв-22, 13:51   +/
действительно, никто не парится, что там на коленке работает или не работает у студента на хомяке
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #108

152. Сообщение от Ordu (ok), 10-Янв-22, 17:52   +2 +/
> Так по стандарту вообще нет компилятора

Если заниматься буквоедством, то при таких вводных, фраза "компилятор не знает" не имеет смысла, потому что нет компилятора.

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

В C эти грабли менее опасны, но не по перечисленным выше причинам, а потому что типизация строже, компилятору выдаётся больше данных о типах переменных, аргументов, возвращаемых значениях, и он может проверять. И поэтому чаще случается так, что две строки вместо одной строки (или одна вместо двух) -- это ошибка компиляции.

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

153. Сообщение от kai3341 (ok), 10-Янв-22, 18:37   +/
> После шелла збс, в нём пропустил пробел и о том, что тебе очко порвало, ты узнаешь через полгода, не раньше.

true story =(

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

154. Сообщение от СССР (?), 11-Янв-22, 00:40   +/
именно по этому на тиобе он в топе )
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #146

155. Сообщение от СССР (?), 11-Янв-22, 00:45   +/
питон - язык для бакланов.
Ответить | Правка | Наверх | Cообщить модератору

156. Сообщение от Аноним (31), 11-Янв-22, 03:39   +2 +/
Да мне глубоко накласть на ваши питонопроблемы с клиническим пробелодрочерством, когда есть более адекватные языки. Сами объясняйте друг-другу, почему вы не можете избавиться от грабель, на которые сами же постоянно и натыкаетесь. А мне в это болото лезть незачем.

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

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

157. Сообщение от ptr (ok), 11-Янв-22, 08:32   +/
TensorFlow написан на С++ с использованием CUDA. Для Python только API, причем наравне с API для других языков. Загляните в его исходники, если не верите
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28

158. Сообщение от ptr (ok), 11-Янв-22, 08:49   +/
Для GCC, чтобы тут не попасться, можно использовать -Wtraditional. А что использовать для Python?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #55 Ответы: #159, #160

159. Сообщение от Аноним (85), 12-Янв-22, 00:00   +/
Выше где-то писали что линтер помогает.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #158

160. Сообщение от ptr (ok), 12-Янв-22, 03:27   +/
> Для GCC, чтобы тут не попасться, можно использовать -Wtraditional. А что использовать
> для Python?

Просто штатный ключ компиляции и статический анализатор кода - это все же различные вещи.
Линтер использовать проблематично при написании скриптов для встроенного в какое-то приложение Python. Да запретить пушить недописанный код в git - усложнить регулярное резервное копирование исходников, которое при пуше выполняется автоматически.

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

161. Сообщение от Dmitry (??), 14-Янв-22, 19:27   +/
пахнет - не трогай
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #71

162. Сообщение от Аноним (162), 16-Янв-22, 16:30   +/
Они PythoRUSTы.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2


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

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




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

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