1. PHP / Говнокод #24589

    +1

    1. 001
    2. 002
    3. 003
    4. 004
    5. 005
    6. 006
    7. 007
    8. 008
    9. 009
    10. 010
    11. 011
    12. 012
    13. 013
    14. 014
    15. 015
    16. 016
    17. 017
    18. 018
    19. 019
    20. 020
    21. 021
    22. 022
    23. 023
    24. 024
    25. 025
    26. 026
    27. 027
    28. 028
    29. 029
    30. 030
    31. 031
    32. 032
    33. 033
    34. 034
    35. 035
    36. 036
    37. 037
    38. 038
    39. 039
    40. 040
    41. 041
    42. 042
    43. 043
    44. 044
    45. 045
    46. 046
    47. 047
    48. 048
    49. 049
    50. 050
    51. 051
    52. 052
    53. 053
    54. 054
    55. 055
    56. 056
    57. 057
    58. 058
    59. 059
    60. 060
    61. 061
    62. 062
    63. 063
    64. 064
    65. 065
    66. 066
    67. 067
    68. 068
    69. 069
    70. 070
    71. 071
    72. 072
    73. 073
    74. 074
    75. 075
    76. 076
    77. 077
    78. 078
    79. 079
    80. 080
    81. 081
    82. 082
    83. 083
    84. 084
    85. 085
    86. 086
    87. 087
    88. 088
    89. 089
    90. 090
    91. 091
    92. 092
    93. 093
    94. 094
    95. 095
    96. 096
    97. 097
    98. 098
    99. 099
    100. 100
    <?php
    error_reporting(0);
    ini_set('display_errors', '0');
    mb_internal_encoding('UTF-8');
    header('Access-Control-Allow-Origin: *');
    header('Content-Type: text/html; charset=utf-8');
    $string=mb_strtolower(trim($_REQUEST['q']));
    $string=str_replace('#', 'sharp', $string);
    $string=str_replace('++', 'plusplus', $string);
    preg_match_all('/(\w+)/u', str_replace('_', '', $string), $matches);
    $words=$matches[1];
    $bad=array();
    $good=array();
    foreach($words as $word){
    if(mb_strpos($word, 'java')!==false || mb_strpos($word, 'джав')!==false || mb_strpos($word, 'ява')!==false){
    if(mb_strpos($word, 'script')===false && mb_strpos($word, 'скрипт')===false){
    $bad[]='Java';
    }
    }
    if(mb_strpos($word, 'python')!==false || mb_strpos($word, 'питон')!==false || mb_strpos($word, 'пайтон')!==false){
    $bad[]='Python';
    }
    if(mb_strpos($word, 'perl')!==false || mb_strpos($word, 'перл')!==false || mb_strpos($word, 'пёрл')!==false){
    $bad[]='Perl';
    }
    if(mb_strpos($word, 'cplusplus')!==false || mb_strpos($word, 'сplusplus')!==false || mb_strpos($word, 'cpp')!==false){
    $bad[]='C++';
    }
    if(mb_strpos($word, 'csharp')!==false || mb_strpos($word, 'сsharp')!==false || mb_strpos($word, 'сишарп')!==false || mb_strpos($word, 'сшарп')!==false){
    $bad[]='C#';
    }
    if($word=='c' || $word=='си' || $word=='сях'){
    $bad[]='C';
    }
    if(mb_strpos($word, 'haskel')!==false || mb_strpos($word, 'хаскел')!==false){
    $bad[]='Haskell';
    }
    if(mb_strpos($word, 'pascal')!==false || mb_strpos($word, 'паскал')!==false){
    $bad[]='Pascal';
    }
    if(mb_strpos($word, 'delphi')!==false || mb_strpos($word, 'delfi')!==false || mb_strpos($word, 'делф')!==false || mb_strpos($word, 'дельф')!==false){
    $bad[]='Delphi';
    }
    if(mb_strpos($word, 'assembler')!==false || mb_strpos($word, 'asm')!==false || mb_strpos($word, 'ассемблер')!==false || mb_strpos($word, 'асм')!==false){
    $bad[]='Assembler';
    }
    if(mb_strpos($word, 'ruby')!==false || $word=='руби' || mb_strpos($word, 'рубист')!==false || mb_strpos($word, 'рубях')!==false){
    $bad[]='Ruby';
    }
    if(mb_strpos($word, '1c')!==false || mb_strpos($word, '1с')!==false || mb_strpos($word, '1ц')!==false){
    $bad[]='1C';
    }
    if(mb_strpos($word, 'dart')!==false || mb_strpos($word, 'дарт')!==false){
    $bad[]='Dart';
    }
    if(mb_strpos($word, 'linux')!==false || mb_strpos($word, 'линукс')!==false || mb_strpos($word, 'линух')!==false || mb_strpos($word, 'ubunt')!==false || mb_strpos($word, 'убунт')!==false || mb_strpos($word, 'debian')!==false || mb_strpos($word, 'дебиан')!==false || mb_strpos($word, 'freebsd')!==false || mb_strpos($word, 'фрибсд')!==false){
    $bad[]='Linux';
    }
    if(mb_strpos($word, 'unix')!==false || mb_strpos($word, 'nix')!==false || mb_strpos($word, 'юникс')!==false || mb_strpos($word, 'юних')!==false){
    $bad[]='Unix';
    }
    if(mb_strpos($word, 'jvm')!==false || mb_strpos($word, 'жвм')!==false){
    $bad[]='JVM';
    }
    if(mb_strpos($word, 'jsharp')!==false){
    $bad[]='J#';
    }
    if(mb_strpos($word, 'jplusplus')!==false){
    $bad[]='J++';
    }
    if(mb_strpos($word, 'git')!==false || mb_strpos($word, 'гит')!==false){
    if(mb_strpos($word, 'hub')===false && mb_strpos($word, 'хаб')===false && mb_strpos($word, 'lab')===false && mb_strpos($word, 'лаб')===false){
    $bad[]='Git';
    }
    }
    if(mb_strpos($word, 'svn')!==false || mb_strpos($word, 'свн')!==false){
    $bad[]='SVN';
    }
    if(mb_strpos($word, 'postgres')!==false || mb_strpos($word, 'постгр')!==false || mb_strpos($word, 'pg_')!==false){
    $bad[]='PostgreSQL';
    }
    if(mb_strpos($word, 'composer')!==false || mb_strpos($word, 'композер')!==false){
    $bad[]='Composer';
    }
    if(mb_strpos($word, 'bower')!==false || mb_strpos($word, 'бовер')!==false || mb_strpos($word, 'бауэр')!==false || mb_strpos($word, 'боуэр')!==false){
    $bad[]='Bower';
    }
    if(mb_strpos($word, 'node')!==false || mb_strpos($word, 'ноде')!==false || mb_strpos($word, 'нода')!==false){
    $bad[]='NodeJS';
    }
    if(mb_strpos($word, 'php')!==false || mb_strpos($word, 'пхп')!==false || mb_strpos($word, 'пых')!==false || mb_strpos($word, 'пэхапэ')!==false || mb_strpos($word, 'похапэ')!==false || mb_strpos($word, 'пехапе')!==false || mb_strpos($word, 'похапе')!==false || mb_strpos($word, 'эйч')!==false || mb_strpos($word, 'пшп')!==false){
    $good[]='PHP';
    }
    if(mb_strpos($word, 'mysql')!==false || mb_strpos($word, 'мускул')!==false || mb_strpos($word, 'майскул')!==false){
    $good[]='MySQL';
    }
    if(mb_strpos($word, 'windows')!==false || mb_strpos($word, 'виндовс')!==false || mb_strpos($word, 'шинд')!==false || mb_strpos($word, 'винд')!==false){
    $good[]='Windows';
    }
    }

    Запостил: HighVoltageDick, 06 Августа 2018

    Комментарии (157) RSS

    • $bad=array_unique($bad);
      $good=array_unique($good);
      $cons=array('говно', 'для быдла', 'для чмошников');
      $pros=array('для элиты', 'непередаваемое наслаждение');
      $phrases=array();
      if(count($bad)>0){
      $phrase='';
      $i=1;
      shuffle($bad);
      foreach($bad as $word){
      $phrase.='"'.$word.'"';
      if($i==count($bad)-1){
      $phrase.=' и ';
      } elseif($i<count($bad)){
      $phrase.=', ';
      }
      $i++;
      }
      $phrase.=' - '.$cons[array_rand($cons)].'.';
      $phrases[]=$phrase;
      }
      if(count($good)>0){
      if(count($bad)>0){
      $phrase='А вот ';
      } else {
      $phrase='';
      }
      $i=1;
      shuffle($good);
      foreach($good as $word){
      $phrase.='"'.$word.'"';
      if($i==count($good)-1){
      $phrase.=' и ';
      } elseif($i<count($good)){
      $phrase.=', ';
      }
      $i++;
      }
      $phrase.=' - '.$pros[array_rand($pros)].'.';
      $phrases[]=$phrase;
      }
      if(count($phrases)>0){
      echo implode(' ', $phrases)."\nФакт.\n\nОтправлено с помощью \"PHP\".";
      }
      ?>
      Ответить
    • Ёбаный в рот, зачем я такое на ночь увидел.
      Ответить
    • Добавь тогда уж и автоголосвалку. А то чо как быдло!
      Ответить
      • "Pascal", "Unix", "Bower", "1C", "SVN", "J++", "Dart", "NodeJS", "Perl", "C#", "PostgreSQL", "Ruby", "J#", "Haskell", "C++", "JVM", "Assembler", "Linux", "Composer", "Python", "Delphi", "Git" и "Java" - говно. А вот "MySQL", "Windows" и "PHP" - для элиты.
        Факт.

        Отправлено с помощью "PHP".
        Ответить
    • Я, HighVoltageDick, находясь в здравом уме и твердой памяти, торжественно заявляю:
      Ответить
    • HighVoltageDick, ты какой таймаут обновления поставил, пидор? Из-за тебя ГК лагать начал. Факт.
      Ответить
      • var cids=[];
        setInterval(function(){
        jQuery.get('/comments', function(response){
        var html=jQuery(response);
        var breaked=false;
        jQuery.each(html.find('.hentry'), function(){
        if(!breaked){
        var entry=jQuery(this);
        var username=jQuery.trim(entry.find('.entry-author').first().text());
        var comment=jQuery.trim(entry.find('.entry-comment').first().text());
        if(username!='HighVoltageDick'){
        var link=jQuery.trim(entry.find('.answer').first().attr('href'));
        var cid=link.split('replyTo=')[1];
        if(cids.indexOf(cid)==-1){
        cids.push(cid);
        jQuery.get(link, function(response2){
        var html2=jQuery(response2);
        var form2=html2.find('form').eq(1).serialize();
        jQuery.get('http://localhost/langs.php?q='+encodeURIComponent(comment), function(response3){
        if(jQuery.trim(response3)!=''){
        console.log(response3);
        jQuery.post(link, form2+'&text='+encodeURIComponent(response3));
        }
        });
        });
        }
        }
        }
        });
        });
        }, 10000);
        Ответить
        • Ничего не понимаю. Переведи на "PHP".
          Ответить
          • "PHP" - для элиты.
            Факт.

            Отправлено с помощью "PHP".
            Ответить
            • Я понял, что "PHP" - для элиты, а ты возьми да переведи.
              Ответить
              • "PHP" - для элиты.
                Факт.

                Отправлено с помощью "PHP".
                Ответить
                • Я понял, что "PHP" - для элиты, а ты возьми да переведи.
                  Ответить
                  • "PHP" - непередаваемое наслаждение.
                    Факт.

                    Отправлено с помощью "PHP".
                    Ответить
                    • Я понял, что "PHP" - непередаваемое наслаждение, а ты возьми да переведи.
                      Ответить
                      • "PHP" - непередаваемое наслаждение.
                        Факт.

                        Отправлено с помощью "PHP".
                        Ответить
                        • Я понял, что "PHP" - непередаваемое наслаждение, а ты возьми да переведи.
                          Ответить
                          • "PHP" - непередаваемое наслаждение.
                            Факт.

                            Отправлено с помощью "PHP".
                            Ответить
                            • Я понял, что "P‎HP" - непередаваемое наслаждение, а ты возьми да переведи.
                              Ответить
                            • А как ты запускаешь эти рулоны? И как парсить сток?
                              Ответить
                              • Смысл сам у себя на ГК спрашивать? Спрашивай в каком-нибудь другом месте. В психушке, например.
                                Ответить
        • Говно – PHP здесь ненужен, хватило бы одного жопаскрипта.
          Ответить
    • >>> Отправлено с помощью "P‎HP".
      Так это же пиздёж, получается. Это сгенерировано оно с помощью "P‎HP", а вот отправлено - очень даже с помощью "Ja‎vasc‎ript".
      Ответить
    • лаба
      Ответить
    • Нахуя нужны фигурные скобки для однострочных операторов?
      Ответить
      • Как-то мне встречался си-подобный язычок – "Gentee", так вот в нём кроме фигурных скобок был ещё вот такой синтаксис:
        if hui: pizda(); djigoorda(); bla(); blabla()
        Т.е. операторные скобки здесь это ":" и перевод строки. Вообще это прикольный язык, стандартная библиотека там годная, просто подключать dll, text-функции. Вот только он из тех языков, который никому нахуй не всрался.
        Ответить
        • язычок назывался петон
          Ответить
          • Чтоб в питонии юзать скобки фигурные нужно напейсать "from __future__ import braces", а в Gentee они сразу есть.
            Ответить
            • >>Чтоб в питонии юзать скобки фигурные нужно напейсать "from __future__ import braces",
              ахахахаххаха
              Ответить
              • } else if (strcmp(feature, "braces") == 0) {
                            PyErr_SetString(PyExc_SyntaxError,
                                            "not a chance");
                            PyErr_SyntaxLocationEx(filename, s->lineno, s->col_offset);
                            return 0;
                        }

                Отсюда: https://hg.python.org/cpython/file/956b8afdaa3e/Python/future.c#l43
                Ответить
                • Даже так: https://hg.python.org/cpython/file/tip/Python/future.c#l45

                  В самом свежем коммите всё равно “not a chance”.
                  Ответить
                  • Да что ж такое:

                    https://ideone.com/sthmHy
                    Python 3 (python 3.5)
                    SyntaxError: not a chance

                    https://ideone.com/wMqbbF
                    Python (PyPy 2.6.0)
                    SyntaxError: not a chance

                    https://ideone.com/9hWbCs
                    Python 3 nbc (python 3.4)
                    SyntaxError: not a chance

                    https://ideone.com/mRg24P
                    Python (cpython 2.7.13)
                    SyntaxError: not a chance
                    Ответить
                • Как в том модуле работает автодополнение?
                  Ответить
            • Лол, и реально есть.
              Ответить
        • Если добавить круглые скобки у условия if и "endif" в конце, то получим "PHP":
          if (hui): pizda(); djigoorda(); bla(); blabla(); endif;

          Именно поэтому я за "PHP". На нём можно писать разными способами.
          Ответить
          • тогда надо быть за руби или перл
            Ответить
          • "hui", "pizda" - это как "foo", "bar"?
            Ответить
            • А что у нас будет вместо baz, qux, quux, corge, grault, garply, waldo, fred, plugh, xyzzy и thud?
              Ответить
          • То ли дело Forth:
            HUI IF PIZDA DJIGOORDA BLA BLANLA THEN
            Ничего лишнего – никаких скобочек, двоеточиий, точек с запятой и пр.
            Ответить
            • Зато двоеточие и точка с запятой есть вокруг функций объявления новых слов. И смотрятся они там весьма странно.
              Ответить
              • С непривычки – да, но синтаксис полностью изменяемый, можно переопределить что угодно:
                : DEF : ;
                : END-DEF POSTPONE ; ; IMMEDIATE
                
                DEF FACTORIAL ( n -- n! )
                    DUP IF
                        DUP 1- RECURSE *
                    ELSE
                        DROP 1
                    THEN
                END-DEF
                
                7 FACTORIAL .
                Ответить
                • Сделай тогда как в "PHP".
                  Ответить
                  • Много пилить, кроме синтаксиса нужно реализовать сборщик мусора, все функции и что там ещё.
                    Ответить
                    • Ну не все пилить естественно, а только необходимое для минимального примера.
                      Ответить
            • Вот пример определения однострочного IF: (только одна ветвь):
              : DEF : ;
              : END-DEF POSTPONE ; ; IMMEDIATE
              
              DEF IF:
                  POSTPONE IF
                  SOURCE SWAP >IN @ + SWAP >IN @ - EVALUATE
                  SOURCE SWAP DROP >IN !
                  POSTPONE THEN
              END-DEF IMMEDIATE
              
              
              DEF FACTORIAL ( n -- n! )
                  DUP IF: DUP 1- RECURSE * EXIT
                  DROP 1
              END-DEF
              
              7 FACTORIAL .
              Ответить
    • отравлено с помощью "PHP"
      Ответить
    • $ugly[] = $urmom
      Ответить
    • >>> []=
      А это такая операция "push_back"?
      Ответить
    • А Lua как всегда никуда не попал.
      Ответить
      • Потому что никому кроме тебя и меня до него нету дела
        Ответить
        • Почему, его иногда вспоминают, когда шутят про итерацию с единицы
          Ответить
          • А когда вспоминают "Lua" - вспоминают тебя.
            Ответить
          • Скорее уж про паскаль вспомниают, кмк про луа знает куда меньше народу
            Ответить
            • Странно, что именно про паскаль вспоминают, ведь индексом у массива может быть любой перечисляемый тип, даже char, и начинать индексацию тоже можно с любого значения. Разве что в типе string идёт индексация с 1, потому что в 0-м элементе хранится её длина.
              Ответить
              • Я паскаль не видел четверть века.
                Напомни пожалуйста как там поменять индексацию? директивой копелятора?
                Ответить
                • var a: array ['a'..'z'] of integer;
                  Ответить
                  • и правдаю. А так же можно [42..100] ?

                    значит, по умолчанию она там была с единицы

                    А еще так в VB(S), кажется.

                    В Lua вообще индексация штука забавная: там таблица может быть и массивом и словарем/мапой/хешем и объктом одновременно
                    Ответить
                    • В Паскале нет никаких умолчаний. Нужно каждый раз указывать стартовый индекс.
                      Ответить
                    • > А так же можно [42..100] ?
                      Любой перечислимый тип, "42..100" – тип диапазон, его тоже можно юзать, можно даже [byte] – эквивалентно [0..255], или даже [word] (помню что в TP это не работало, потому что макс рпзмер массива был чуть поменьше размера сегмента). В динамических массивах (array of integer) индексация с 0.

                      > В Lua
                      Там же всё таблы? Как реализовано? Всё – хэш-таблицы, независимо от того массив ли это, словарь, объект и пр.?
                      Ответить
                      • Да, таблы. Табла может быть массивом или словарем.
                        petux  = {"pit", "tux", kurochka="rjaba"} --это массив из двух элементов, а по ключу kurochka у нас ряба
                        
                        print(#petux) --"длина" массива у нас 2, бо оператор # считает до первой "дырки"
                        print(petux[1]) --pit
                        print(petux['kurochka']) --pit
                        Ответить
                    • Даже так можно: array [-42 .. 42] of integer.
                      Ответить
                  • Можно даже использовать тайпдефы:
                    type
                        letters = 'a' .. 'z';
                        massiv = array [letters] of integer;
                    var
                        a: massiv;
                    Ответить
                    • Можно даже так:
                      type
                          huinya = (huinya1, huinya2, huinya3, huinya4, huinya5);
                          mas = array [huinya1..huinya3] of huinya;
                      Ответить
                      • Какой всё таки охуенный язык
                        Ответить
                        • ...похоронили
                          Ответить
                          • Кстати, а как дела с типами в Питоне? Он вроде бы, как и Паскаль, заимствовал некоторые идеи из языка SETL.
                            Ответить
                            • Со множествами? На уровне синтаксиса только перечисление элементов {1,2,4}, всё остальное – конструкторы и методы.
                              Ответить
                            • list (нумерующийся с ноля динаический массив) имеет свой литерал

                              spam = ['eggs', 'bar']
                              print (len(spam)) # 2

                              ренджей (как в руби и перле) как таковых нет
                              Ответить
                              • > нумерующийся с ноля динаический массив
                                Да скорее мутабельный кортеж
                                Ответить
                                • В целом нет: семантически кортеж это упорядоченный набор фиксированной длины, возможно гетерогенный. А лист гомогенный и не фиксированный.

                                  name = ("ivan", "pupkin")[0] #ok
                                  for foo in ("ivan", "pupkin") # не ok

                                  name = ["ivan", "pupkin"][0] #не ok
                                  for user in ["roskomo", "needless"]# ok

                                  но это тонкие материи оче
                                  Ответить
                                  • > лист гомогенный
                                    Ниразу
                                    Ответить
                                  • Это что за идеи? Я не знаю про что ты тут, но в питоне единственное отличие - кортеж немутабельный, а значит, может использоваться как ключ в словарях. Всё остальное - чисто кому как удобною
                                    Ответить
                                    • К сожалению, большинство людей именно так и думает
                                      Ответить
                                      • Да? И в чём же сожаление?
                                        Ответить
                                        • В том что семантика у них разная
                                          https://stackoverflow.com/questions/1708510/python-list-vs-tuple-when-to-use-each?answertab=votes#tab-top

                                          (сам так же апвотнутый коммент к ответу)
                                          Но большинству программистов на семантику срать, они и слов-то таких не знают. Знают только что они ридонли, а другой нет. И так их и используют. Sad, but true
                                          Ответить
                                      • > К сожалению, большинство людей именно так и думает

                                        Вот и я о том же, и они правы. Язык не энфорсит твоих красивых идей, поэтому можно делать что хочется.
                                        В нормальных языках со статической типизацией это энфорсится, и твои рассуждения в них имели бы смысл.
                                        Ответить
                                        • Питон вообще ничего не энфорсит. Плюс это или минус это другой вопрос.
                                          Ничто не мешает тебе обращаться к непубличными символам, например:
                                          from spam import _eggs
                                          _eggs._MyClass()._foo()

                                          Но так делать плохо, правда?

                                          Так же и тут: правила есть, но за ними никто не следит
                                          Ответить
                                    • Ещё низя зделать кортеж длины 1. или можно?
                                      Ответить
                                      • > Ещё низя зделать кортеж длины 1. или можно?
                                        ("можно",)
                                        tuple(["можно"])
                                        Ответить
                                        • Ох нихуя себе! Это с какой версии можно? С самой первой?
                                          Ответить
                                          • > Это с какой версии можно? С самой первой?

                                            Не знаю по поводу первой, но уже лет 15 можно. К примеру, статья [1] последний раз обновлялась в 2008 году
                                            [1] https://wiki.python.org/moin/TupleSyntax
                                            Ответить
                                          • Когда мне первый раз показали питон там уже было

                                            pituh = ("kurochka",) везде


                                            Потом я увидел
                                            ptushki = ("kurochka", "tsyplenochek"), и говорю: почему не ["kurochka", "tsyplenochek"] ?

                                            А мне: "ну чтобы не изменить случайно". Тут-то я и понял что немного PHP есть в каждом питоне
                                            Ответить
                                  • Зачем ты приплетаешь сюда понятия из других языков? Мы говорим про питон, ау. Ты говоришь, что список гомогенный (хоть почти всегда это так и есть), а гетерогенный – плохо, что юзать кортеж как ридонли массив – плохо, но на вопрос "чем плохо?" ты вякаешь "семантика разная" и всё, ничего конкретного.

                                    > for foo in ("ivan", "pupkin") # не ok
                                    Что "не ok"? Итерироваться по кортежу, потому что элементы могут быть разного типа? Так проверяй тип, если не уверен что этот кортеж гомогенный. Со списком та же хуйня.

                                    > name = ["ivan", "pupkin"][0] #не ok
                                    Тут что "не ok"? И почему можно с кортежом? Ты уверен, что если функция возвращает кортеж, что он ненулевой длины?
                                    Ответить
                                    • даже в хачкеле только ленивый не хочет итерироваться по кортежу с элементами разного типа, это называется Generic programming.
                                      Ответить
                                    • >>ничего конкретного.
                                      я тебе ссылку дал сверху, поди почитай до просветления
                                      https://stackoverflow.com/questions/1708510/python-list-vs-tuple-when-to-use-each?answertab=votes#tab-top


                                      И тут еще
                                      [quote]
                                      Though tuples may seem similar to lists, they are often used in different situations and for different purposes. Tuples are immutable, and usually contain a heterogeneous sequence of elements that are accessed via unpacking (see later in this section) or indexing (or even by attribute in the case of namedtuples). Lists are mutable, and their elements are usually homogeneous and are accessed by iterating over the list.
                                      [/quote]
                                      https://docs.python.org/2/tutorial/datastructures.html#tuples-and-sequences
                                      Ответить
                                      • Опять же, ты не ответил на вопрос "почему нельзя использовать кортеж как ридонли массив и почему гетерогенный список – плохо". Список обычно гомогенный и изменяемый, кортеж обычно нет. Обычно – не значит, что по-другому обязательно плохо.
                                        Ответить
                                        • У любого инструмента есть правильное использование ("по назначению"). Правильным ("по назначению') я называю такое использование, которое задумывал его создатель. Однако у многих инструментов есть какие-то свойства, которые позволяют использовать их не по назначению (например утюгом можно угнетать капусту потому что он тяжелый).

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

                                          Например следующий кортеж указывает на точку в двумерном пространстве: (22, 34).

                                          Тут 22 это координата по оси X, а 34 по Y. Не смотря на то, что это два числа, у них разный смысл (та сама ситуция, когда тип один, а семантика разная)

                                          Если это понять, то становится так же понятно почему не имеет смысла добавлять что-то в кортеж: он (как структура) имеет изначально известное количество мест, и за каждым закреплен какой-то смысл.
                                          А вот в стек, очередь и вектор добавлять можно.

                                          Разумеется, можно использовать туплу как "рид-онли-лист" пытаясь с ее помощью компенсировать отсутствие его в питоне, но это использование не по назначению (см утюг), да к тому же зачем искуственно тащить в язык "неизменяемый" объект, если его там нет изначально? не лучше тогда сразу взять язык с ридонли листом?

                                          Вот если бы у питона вместо туплы были сразу же структуры (привет, руби) то насколько легче было бы жить
                                          Ответить
                                          • >> Например следующий кортеж указывает на точку в двумерном пространстве: (22, 34).

                                            Но ведь это вектор. Это координаты вектора, указывающего из начала координат в данную точку.

                                            Да, добавить «элементы» (координаты) к этому вектору мы не можем, потому что изменится размерность пространства.

                                            Однако, у «физического» вектора координаты зависят от базиса. Если мы повернём систему координат на четверть оборота, то (22, 34) может превратиться в (34, -22). А если на произвольный угол, не кратный четверти оборота, то 22 и 34 вообще смешаются. Но да, у первой и второй координаты смысл разный — это проекции на разные базисные направления.

                                            Поэтому у «программистского» вектора название неудачное. Фактически в программировании векторами называют списки, произвольные конечные последовательности, не привязанные к пространству.
                                            Ответить
                                            • Согласен, что у вектора название в программировании неудачное.

                                              Про остальное то что думаешь?
                                              Мне правда интересно, кто-то кроме меня, Supamee и Izkata читал "datastructures.html", или все правда думают что кортеж это ридонли лист?
                                              Ответить
                                              • > все правда думают что кортеж это ридонли лист?

                                                Честно говоря, ты люто задрал своей «семантикой». Семантика задаётся либо рефересной имплементацией, либо спекой.
                                                Если в спеке написано "так делать низя" или спеки нет и референсная реализация этого не позволяет, вот это значит, что так делать низя.

                                                Давай откроем референс бидона.
                                                https://docs.python.org/3/reference/datamodel.html#objects-values-and-types
                                                Спека нигде никаких семантик не упоминает, кроме иммутабельности никаких отличий от списка не упоминается. Референсная реализация CPython, как ты понимаешь, тоже никаких дополнительных ограничений не налагает.

                                                Более того, есть куча примеров, когда тюплы используются в спеке просто как иммутабельные списки, вот например

                                                __bases__ is a tuple containing the base classes, in the order of their occurrence in the base class list
                                                Ответить
                                                • Нахуй ему что-то доказывать? Он просто выёбывается.
                                                  Ответить
                                                  • Сёма, не вмешивайся когда взрослые разговаривают
                                                    Ответить
                                                • Блядь, как всё сложно. "Кортежи", "семантика", "иммутабельные списки", "спека"...
                                                  Ответить
                                                • В питоне все задается человекочитаемым текстом, и технически ничего не запрещается.

                                                  Полистай на две строчки вверх, или давай я тебе скопирую:

                                                  [quote]
                                                  Though tuples may seem similar to lists, they are often used in different situations and for different purposes. Tuples are immutable, and usually contain a heterogeneous sequence of elements that are accessed via unpacking (see later in this section) or indexing (or even by attribute in the case of namedtuples). Lists are mutable, and their elements are usually homogeneous and are accessed by iterating over the list.
                                                  [/quote]

                                                  https://docs.python.org/2/tutorial/datastructures.html#tuples-and-sequences
                                                  Ответить
                                                  • Да мне насрать на этот туториал и на того, кто его написал. В референсе написано, что тюплы в питоне ходят и крякают как иммутабельные списки, значит, это иммутабельные списки.

                                                    Если в вашем влажном воображении как-то по-другому, это ваши проблемы, обратитесь к специалисту.
                                                    Ответить
                                                    • Тебе насрать на туторил по питону на сайте python.org? Правда?
                                                      Ответить
                                                      • Чего ты добивался, ебень? Нельзя было сразу назвать отличие? Нахуй ты выёбываешься?
                                                        Ответить
                                                      • > Тебе насрать на туторил по питону на сайте python.org? Правда?

                                                        Именно. Почему меня должен волновать туториал? Ты ещё скажи, что меня должно беспокоить, что написано в туториале по C++ на сайте cplusplus.com.

                                                        > they are often used in different situations and for different purposes.
                                                        > usually contain

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

                                                        читани спекца.
                                                        Ответить
                                                        • Я не знаю какое отношение имеет сайт cplusplus.com к комитету по стандартам, а сайт python.org к питону имеет самое прямое отношение, и обычно если там что-то написано значит Гвидо именно это и имел ввиду.

                                                          Приведенный тобою референс отписывает техническую реализацию, а в туториале на python.org описывается как этим пользоваться.

                                                          В питоне ничего практически не форсится интерпретатором, но есть правила использования и обычно им следуют. Например, начинающиеся с подчеркивания символы не публичны (хотя никто не мешает к ним обращаться). Например, тупла это не "рид онли лист", хотя никто не мешает его так использовать.

                                                          В других языках тоже можно "обмануть" компилятор.

                                                          В сях можно скастить указатель на структуру с char полями в указатель на массив чаров и интерироваться по нему. Следуя твоей логике "структура в сях это массив" (привет, царь!) потому что это работает.

                                                          В HTML/CSS можно навесить background на таг strong, сделать его блочным, квадратным, и использовать в качестве кнопки.
                                                          Однако семантика у него "выделять важную часть текста", даже не смотря на то, что ее можно легко переопределить.

                                                          В джаве можно дергать рефреклисей приватные методы, и сделать вывод что контроля видимости в джаве нет, потому что ну вот же: работает!

                                                          Если что-то "просто работает" и идет в разрез с докой на основном сайте, то это хак.
                                                          Ответить
                                                          • > Следуя твоей логике "структура в сях это массив" (привет, царь!) потому что это работает.

                                                            Следуя моей логике этого делать нельзя, поскольку по стандарту такой код содержит Undefined Behavior.

                                                            > В джаве можно дергать рефреклисей приватные методы, и сделать вывод что контроля видимости в джаве нет, потому что ну вот же: работает!

                                                            Ты не поверишь, но фреймворки зачастую именно это и делают! При правильном использовании это полезно, и спека этого не запрещает.

                                                            > сделать вывод что контроля видимости в джаве нет

                                                            Есть, если выставить правильный секьюрити менеджер через setSecurityManager.
                                                            Ответить
                                                            • >>такой код содержит Undefined Behavior.
                                                              Почему? Если структура явно выровнена то почему нельзя кастить ее в array?
                                                              Как же кастят в структуру пришедшие из аппаратуры или по сети данные, если известно что это массив N байт с определенными значениями?

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

                                                              Если в питоне можно туплой заменить лист, это не значит что тупла и лист это одно и тоже.
                                                              Ответить
                                                              • > Если в питоне можно туплой заменить лист, это не значит что тупла и лист это одно и тоже.

                                                                Разумеется это не одно и тоже. Тюпл иммутабельный вообще-то, а список — нет.
                                                                Ответить
                                                                • >>Есть, если выставить правильный секьюрити менеджер через setSecurityManager.


                                                                  Понятно. В джаве нету контроля видимости, пока не выставлен SecurityManager

                                                                  Вы все цари
                                                                  Ответить
                                                  • Что значит «via unpacking”?
                                                    Ответить
                                                    • >>Что значит «via unpacking”?
                                                      Значит

                                                      info = ("You", 81)
                                                      name, iq = info # это называется unpacking
                                                      Ответить
                                                    • БЛЯДЬ!
                                                      Обновился до “iOS 11”. Как теперь сука обычные кавычки писать?
                                                      Ответить
                                                      • Как бы случайно и невзначай прихвастнул наличием нигерской техники от "Apple"...
                                                        Ответить
                                          • Плохо использовать кортежи для векторов, матриц, списков значений если мне не нужны ебанические ошибки с изменяемыми объектами? Плохо юзать списки списков как примитивные деревья? Плохо ющать список как стек?
                                            Ответить
                                    • >ты вякаешь "семантика разная" и всё, ничего конкретного.
                                      Вот это правильно, только так и можно с этим говнопидором разговаривать.
                                      Ответить
                        • "PHP"?
                          Ответить
                          • А нельзя ли что-нибудь занятное из аватарок сколотить? (по аналогии с модными некогда составными изображениями из иконок последних фотографий в соцсетях)
                            Ответить
                            • Можно полностью белую картинку, чтобы слиться с фоном.
                              Ответить
                            • Есть ещё приколы с картинками, когда на разных размерах разное изображение. Не знаю, с граватаром можно-ли.
                              Ответить
                              • Я, честно говоря, рассчитывал на лесенку комментариев, из аватарок авторов которых собиралось бы какое-нибудь слово (буквы на аватарках) или картинка (тут сложнее).
                                Ответить
                                • Не считает ли сударь грехом созерцание недостойного?
                                  Ответить
                                  • Не считает, если это недостойное появилось перед глазами созерцающего без его желания, неожиданно и в подобных ситуациях, когда повлияли внешние силы.
                                    Ответить
                                    • @Я, честно говоря, рассчитывал на лесенку комментариев, из аватарок авторов которых собиралось бы какое-нибудь слово (буквы на аватарках) или картинка (тут сложнее).

                                      Invalid memory access

                                      То есть, ты осознаёшь всю незаконность сего деяния и готов взять грех на душу?
                                      Ответить
                                      • Стертор, это ты?
                                        Ответить
                                        • Не-а.

                                          Я Бар у Холода.
                                          Ответить
                                        • Думаешь, корректно просить представиться Билли Миллигана?
                                          Ответить
                                          • С Билли Стертора роднит только жестокое обращение со стороны отца
                                            Ответить
                                      • Я не осознаю всю незаконность сего деяния и не готов взять грех на душу.

                                        Если несколько человек соберёт из аватарок слово "вечность", где каждая буква будет нарисована в свободном редакторе лично пользователем, ничего незаконного не будет.
                                        Ответить
                      • И, кстати, в Паскале тип-перечисление не приводится автоматически к числам, в отличие от сишки, где енумы — это числа. В сишке huinya2 == 1, а в Паскале, чтобы получить единицу, нужно сделать явный каст: ord(huinya2) или byte(huinya2). Т. е. в Паскале статический анализатор на этапе компиляции защищает от помещения случайных значений в переменную типа huinya.
                        Ответить
                • Ты с Бейсиком спутал. Вот в Бейсике была директива OPTION BASE, которая позволяла индексировать массивы с нуля или с единицы.

                  А в Паскале стартовый индекс указывается при каждом объявлении: либо явно указываем диапазон от и до, либо указываем имя типа-диапазона.

                  К сожалению, в Паскале диапазоны можно использовать только для объявления массивов и множеств. Больше никаких операций для диапазонов не предусмотрено. Вирт хотел сделать что-то похожее на язык SETL, да что-то приуныл.
                  Ответить
    • Переведи на "PHP".
      Ответить
      • Перевел
        https://bit.ly/2M6Flue
        Ответить
        • Зачем ты с таким упорством ищешь в интернете посты людей с органическими поражениями мозга и вставляешь ссылки на них к месту и не к месту? Тебе доставляет удовольствие смотреть на больных людей?
          Ответить
          • А почём ты знаешь что они у низ органические повреждения?
            Ответить
            • Это гипотеза. Посмотри, как он составляет предложения во втором сообщении. Он похож на постинсультника.
              Ответить
          • Человек с базовыми знаниями "PHP" спросил что ему ещё нужно, чтобы получить работу джуна. Схуя ты считаешь его больным?
            Ответить

    Добавить комментарий