Кресты / Говнокод #248 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
void SimplexIteration::ReWidth()
{  w[-2]=w[0]=Width; w[-1]=5; for(size_t j=1;j<A.size_j();j++) w[j]=Width;
   if (var) for(size_t j=1; j<A.size_j(); j++)
               if(strlen(var[j])>w[j]) w[j]=strlen(var[j]);
}

Особенно порадовало w[-2]. Знаю, что так можно, но все равно говнисто.

Запостил: guest guest, (Updated )

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

  • Звездочёт:
    Пипец. w[-2]??? На Си++? И тип size_t порадовал тоже))
    Ответить
  • #1: А что не так-то с C++ и почему вдруг w[-2] не должно компилироваться ? Другое дело, что говно действительно.

    А вот тип size_t в цикле for совершенно ни в чём не провинился.
    Ответить
  • Андрей:
    Возможно, это объект класса, в котором переопрделен оператор []...
    Ответить
  • А я вот, ксати не понимаю, зачем в С++ аж 4 вида скобочек? Хватило бы джвух или даже одного:
    void SimplexIteration::ReWidth()
    (  w(-2)=w(0)=Width; w(-1)=5; for(size_t j=1;j<A.size_j();j++) w(j)=Width;
       if (var) for(size_t j=1; j<A.size_j(); j++)
                   if(strlen(var(j))>w(j)) w(j)=strlen(var(j));
    )
    Ответить
    • И то верно. В Бейсике как-то обходятся круглыми скобками для доступа к элементам массива. Более того, в Бейсике один знак = и для сравнения, и для присвоения. В нём нет ни ==, ни :=.
      Ответить
    • > зачем в С++ аж 4 вида скобочек?
      (), [], {}… Не сходится что-то, начальник!
      Ответить
        • Ах да, в шаблонном контексте это действительно скобочки.
          Ответить
            • Вот кстати да: на кой ляд нужны <> в #include? Что это вообще за обфускация, почему бы не сделать какие-нибудь явные #include "xxx.h", #include_local "yyy.h"? Ничего не понимаю.
              Ответить
              • по идее ищутся в другом порядке
                Ответить
                • Да, но как сходу понять, чем " " отличается от < >?
                  Если бы авторы препроцессора добавили #include_local и #include_global, то старые сишники бы закукарекали: «Так нельзя! Это слишком вербозно! Это не Паскаль!»
                  Ответить
                  • ХОРОШО, давайте придумаем сишечку где все понятино

                    INCLUDE_FILE_LOCAL("petookh.h")
                    
                    procedure named main returns integer(accept arguments: none) 
                    begin body of main
                    variable pointer to character ch is pointer to one_byte_string_literal"petux";
                    print_formatted(format_string="%one_byte_string", ch);
                    end body of main
                    Ответить
                    • Похоже на "SQL". Или на "Cobol". Или на "PL/I".
                      Ответить
                      • А теперь осовременим

                        I("file.h")
                        
                        fun main(): int {
                         let ch = "petoox"
                         p(ch)
                        }


                        так лучше?
                        Ответить
                        • Лучше сделать на каждую операцию свой символ.

                          ☎«file.h»
                          
                          φ main ∅→ℤ {
                            ℤ ch
                            ↓
                            ch ≡ «petoox»
                            ↓
                            ✉ ch
                            ↓
                            ↺ 0
                          }
                          Ответить
              • Такая традиция в сишке и в крестах: максимально переиспользовать знаки препинания, вместо того чтобы добавлять ключевые слова.

                * — это и умножение, и разыменование.
                & — это и побитовое "И", и ссылка.
                < и > вообще где только ни используются.
                [] теперь ещё используется в замыканиях, а не только в индексах.
                Ответить
                • >>& — это и побитовое "И", и ссылка.
                  и адрес
                  Ответить
                • Видимо, раньше с автодополнением было всё очень плохо, с кодогенерацией еще хуже, а код набирали через copy con.
                  Ответить
                    • Кто-нибудь пользовался редактором edlin для DOS? Из него выйти не проще, чем из емакса или вима.
                      Ответить
                      • А нет, проще. Просто q и enter. А хелп вызывается знаком вопроса и ентером.

                        Кстати, edlin зачем-то и в современных виндах лежит в System32.
                        Ответить
                          • В семёрке точно есть. Я проверял.
                            Ответить
                            • c:Windows>cmd
                              Microsoft Windows [Version 6.1.7601]
                              Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
                              
                              c:Windows>dir c:windowsSysWOW64edl*
                               Volume in drive C is System
                               Volume Serial Number is 2A40-947F
                              
                               Directory of c:windowsSysWOW64
                              
                              File Not Found
                              
                              c:Windows>dir c:windowsSystem32edl*
                               Volume in drive C is System
                               Volume Serial Number is 2A40-947F
                              
                               Directory of c:windowsSystem32
                              
                              File Not Found
                              
                              c:Windows>



                              Иньё, таг code ест слеши? Серьезно?
                              Это такая фирменная фишка PHP?
                              Ответить
                              • В 32-битной есть. Это досовский файл, поэтому в 64-битную не кладут (в 64-битной отсутствует NTVDM).
                                Ответить
              • Вообще в Перле ещё красивее. Типичная программа на Перле состоит из знаков препинания более, чем наполовину.
                Ответить
                    • Ну почему же:
                      require 'primitives'
                         fact =: times insert at increment at integers rank 0 memo
                         fact integers 5
                      1 1 2 6 24
                         fact 15
                      1.30767e12
                         fact 15x NB. суффикс "x" - это extended precision
                      1.30767e12
                         NB. а потомушта memo
                         fact 14x NB. это ещё не вычисляли
                      87178291200
                         fact 14 NB. а теперь да
                      87178291200
                         fact 13
                      6.22702e9
                         
                         fib =: verb def 'if. y lessorequal 1 do. y else. (fib y minus 2) plus fib decrement y end.' rank 0 memo
                         fib integers 10
                      0 1 1 2 3 5 8 13 21 34
                         fib 100x NB. тип привёлся к вещественному, из-за предыдущих вычислений, которые используются (потомушта рикурсия)
                      3.54225e20
                         NB. по новой:
                         fib =: verb def 'if. y lessorequal 1 do. y else. (fib y minus 2) plus fib decrement y end.' rank 0 memo
                         fib 100x
                      354224848179261915075
                         fib 101
                      573147844013817084101
                      Ответить

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8