Czy programiści Python uważają problem z białymi znakami za niewygodny? [Zamknięte]

11

Wielu programistów, po pierwszym spotkaniu z Pythonem, natychmiast zniechęca znaczeniem białych znaków. Słyszałem z różnych powodów, że jest to niewygodne, ale nigdy nie słyszałem skargi od programisty Python.

Oczywiście nie spotkałem wielu programistów Python, ponieważ swoją karierę spędziłem w świecie Java.

Więc moje pytanie dotyczy tych z was, którzy brali udział w dużym projekcie Python (ponad 3 miesiące, przy czym język Python jest głównym językiem używanym): Czy uważasz, że problem z białymi znakami jest niewygodny i ciągle denerwujący? A może to nie był problem, gdy już się pojawiłeś?

Nie zadaję tego pytania, ponieważ jestem za lub przeciw Pythonowi, lub za lub przeciw używaniu białych znaków. Podoba mi się Python, ale nigdy nie używałem go do niczego dużego.

Proszę nie przedstawiać spekulacji, jeśli nie masz doświadczenia w Pythonie.

Eric Wilson
źródło
2
Czy użyliby tego języka, gdyby tak zrobili? Nie zrobiłbym tego. Irytujące / rozpraszające wymagania dotyczące składni to jedna z rzeczy, które mogą sprawić, że wybiorę inny język dla projektu (zakładając oczywiście, że mogę wybrać).
od kiedy to białe znaki są problemem? :-)
Kugel,
22
Uważamy, że niewygodne jest to, że wszyscy inni go poruszają. Nigdy o tym nie myślimy.
Winston Ewert,
Kwestia białych znaków nie różni się od lat temu - OCCAM2 miał znaczną spację. To nie była wielka sprawa.
szybko_niedz.
4
Jedyny raz, kiedy uznałem to za irytujące, to kopiowanie i wklejanie kodu z Internetu, który został napisany przy użyciu spacji zamiast tabulatorów (lub odwrotnie), powodując dosłownie niewidoczne błędy składniowe
Cameron

Odpowiedzi:

14

Jest tylko jeden przypadek, w którym uważam, że białe znaki są denerwujące, i to podczas modyfikowania istniejącego kodu, tak aby blok kodu musiał być mniej lub bardziej wcięty niż przedtem (np. Dodawanie lub usuwanie if:przed kodem). Pisząc w języku takim jak C, po prostu dodajesz ifparę nawiasów klamrowych i (w Emacs, lub wyobrażam sobie dobrego edytora) naciśnij Tab, aby umożliwić edytorowi automatyczne poprawienie wcięcia. W Pythonie musisz to zrobić sam. Oczywiście istnieją skróty edytora, aby zrobić to sam, więc nie jest tak źle, ale utrata redundancji nakłada nieznaczne dodatkowe obciążenie na programistę.

Ogólnie rzecz biorąc, jest to wygrana, choćby po to, aby zapobiec zapełnieniu połowy ekranu następującymi liniami:

         }
      }
   }
}
dfan
źródło
1
W każdym rozsądnym edytorze, który mówi w języku Python, istnieje bardzo łatwy sposób na ponowne zapoznanie się z blokiem kodu. W Wing IDE po prostu wybieram blok i nacisnę Tab (lub Shift-Tab, aby zmniejszyć poziom wcięcia).
Adam Crossland,
1
Tak, w Emacsie wybieram blok i uderzam C-c >lub C-c <. Jednak nadal musisz to zrobić sam. Innymi słowy, ponieważ białe znaki i logika kodu nie są zbędne, nie można po prostu wybrać gigantycznego bloku i wywołać M-x indent-region(lub jakąkolwiek wersję edytora), aby wciąć wszystko „poprawnie”.
dfan
6
@Adam, dobry edytor ułatwia zmianę poziomu wcięcia. Ale w języku nawiasów klamrowych możesz wkleić nowy kod i nacisnąć ulubioną kombinację klawiszy, aby ponownie wprowadzić plik. Tada! Wcięcie jest poprawne. W Pythonie musisz wkleić, wybrać, wcięcie / dedent. To niewiele, ale tutaj jest mała wygrana dla aparatów ortodontycznych.
Winston Ewert,
@Winston - musi być Twoim redaktorem. Jeśli kod, który wklejasz, sam w sobie jest poprawnie wcięty, to jeśli wychodzi o kilka poziomów za daleko w prawo / w lewo, wystarczy, że wpiszesz (SHIFT +) Tab, aby go odpowiednio wyrównać - nie jest to żadna różnica w naciśnięciu klawisza powtórz plik. Poza tym - nie kopiuj / wklejaj kodu :)
Ingo
1
@Winston: nawet bloki wcięcia Notepad ++ podczas korzystania z Tab i Shift-Tab, nie znalazłem jeszcze skrótu vima, ale nie używam go wystarczająco, jak sądzę: p
Matthieu M.
50

Uwielbiam znaczące białe znaki Pythona. Dla mnie to idealny przykład DRY na poziomie syntaktycznym. Czytelny dla człowieka sposób wskazywania, gdzie zaczyna się i kończy blok kodu, polega na wcięciu. Jeśli chcesz, aby Twój kod był czytelny, musisz wciąć go niezależnie od języka. Głupie jest zmuszanie programisty do podania tych informacji dwa razy, raz dla kompilatora / interpretera i raz dla ludzi. Co więcej, wcięcie w językach podobnych do C jest podobne do komentarza: ma na celu poprawę zrozumiałości, ale jego znaczenie nie jest egzekwowane przez kompilator / interpreter i może bardzo łatwo zsynchronizować się z prawdziwym znaczeniem (tam, gdzie są nawiasy klamrowe), zaciemnianie, a nie wyjaśnianie.

dsimcha
źródło
8
+1 za „Nie powtarzaj się”. Dobrą praktyką jest wcięcie kodu tak, aby odzwierciedlał strukturę bloku, więc dlaczego także znaczniki początku / końca?
Steve314,
12

Znaczące białe znaki są dla mnie wygodne . To sprawia, że ​​piszę mniej. Starannie i dość jednoznacznie formatuje kod. Z tego powodu sprawia, że ​​kod jest bardziej czytelny.

(Z tych samych powodów lubię też spacje w Haskell).

9000
źródło
1
Chciałbym również podzielić się swoimi pozytywnymi doświadczeniami z białymi znakami Haskell, ale FarmBoy nalegał, że trzeba mieć 3 miesiące doświadczenia z Pythonem, wszystko inne było spekulacjami. :-)
Ingo
1
Moje doświadczenie z Pythonem od 1998 roku, więc moja odpowiedź prawdopodobnie się kwalifikuje :) (Szkoda, że ​​moje doświadczenie z Haskellem jest znacznie krótsze.)
9000
@ 9000 Mimo że Haskell pojawił się przed Pythonem! : D
pradyunsg
8

Kiedy po raz pierwszy użyłem Pythona, białe znaki były nowe, a zatem irytujące ograniczenie.

Teraz nawet tego nie zauważam. Używam Pythona od 11 miesięcy.

Matt Ellen
źródło
5

Po pierwsze - moje języki chleb i masło to Python, SQL i Java. Uwielbiam białe znaki Pythona - jest mniej składniowe i pisanie, i zmusza ludzi do pisania czytelnego, starannie sformatowanego kodu. OTOH, nienawidzę gadatliwości Javy - do tego stopnia, że ​​faktycznie używam Pythona do generowania całego bojlera, który muszę napisać w Javie, co imponuje wszystkim moim współpracownikom Java, którzy są zaskoczeni moją produktywnością.

Jedynym dużym zastrzeżeniem jest jednak kopiowanie / wklejanie kodu z sieci - często powoduje to mieszane spacje i tabulatory, co wymaga dodatkowego kroku w celu wyczyszczenia, i zwykle łapię tylko po wyjątku czasu wykonania.

Greg
źródło
Mówienie edytorowi, by składnia wyróżniał zakładki, ponieważ błędy mogą bardzo pomóc - w vimie używam highlight link RedundantSpaces Error | au BufEnter,BufRead * match RedundantSpaces "\t" | au BufEnter,BufRead * match RedundantSpaces "[[:space:]]\+$"w moim vimrc
Daenyth
4

Jeśli programista jest zirytowany znaczeniem białych znaków, prawdopodobnie nie zostanie programistą pythonowym.

Benjamin B.
źródło
1
Słyszałem, jak sporo osób głosiło Pythonowi, którzy mówią, że mieli problemy z The Whitespace Thing (tm), ale po pewnym czasie polubili to. Z moich obserwacji wynika, że ​​gdy coraz więcej osób dołącza do dyskusji na ten temat, zbliża się możliwość jednego z nich opowiadającego taką historię. (Edycja: Natychmiast udowodniona przez drugą odpowiedź ...)
@ delnan, mogę się zapisać.
Ingo
3

Założę się, że znalazłeś znaczne nakładanie się między ludźmi, którzy mają problem ze znaczną spacją, a tymi, którzy nie mają doświadczenia z dobrym edytorem tekstów dla programistów, takim jak Emacs, który obsługuje większość wcięć bez ich zaangażowania.

W każdym razie po zinternalizowaniu Pythona nie jest to już problemem; w rzeczywistości jego zwięzłość i niewielka przestrzeń na ekranie stają się wielką zaletą dla czytelności. Ponieważ używam głównie Pythona, uważam, że języki, w których występuje większa nadmiarowość (np. Java i C #), trudno jest zdyscyplinować samemu pisać. Umieszczanie nawiasów klamrowych wokół kodu, którego wcięcie już sprawia, że ​​jego struktura jest wyraźna, działa mi na nerwy.

JasonFruit
źródło
3

W przypadku faktycznego kodowania wcale nie jest to niewygodne, ale w rzeczywistości korzystne (patrz odpowiedź dsimcha).

Może to być denerwujące, gdy mamy do czynienia z technologiami komunikacyjnymi, które nie szanują wiodących białych znaków (takich jak wiele forów nie zorientowanych na programowanie, a także osadzanie kodu Python w innym języku, takim jak języki szablonów HTML), mimo że uważam to za bardziej wada w narzędziach usuwających wiodące białe znaki niż wada w Pythonie, to prawda, że ​​zbędne języki, które wyrażają strukturę kodu dwa razy, są lepiej przygotowane do obsługi takich destrukcyjnych środowisk (ponieważ można wkleić kod do edytora i automatycznie reindent oparty na wyraźnych znacznikach strukturalnych lub po prostu nie przejmuj się, czy kod jest wykonywany, a nie odczytywany przez ludzi).

ncoghlan
źródło
2

Nie uważam białych znaków za denerwujące. Brak lub niespójne wcięcie uważam za bardzo denerwujące w innych językach. Rozumiem, że ten problem jest jednym z problemów, które styl ma rozwiązać.

Python nie jest jednym z moich podstawowych języków.

Czasami uważam, że obsługa tabulatorów i spacji jest denerwująca. Może to powodować problemy przy przełączaniu edytorów z jednej edycji na inną lub podczas edycji kodu, który napisał ktoś inny. Rozwiązanie jest zwykle trywialne.

BillThor
źródło
1
mieszanie tabulatorów i spacji w wcięciach pytona to najkrótsza droga do piekła: p
Matthieu M.
@Mattieu: Zdecydowanie to moja irytacja.
BillThor
1

Pochodzę z tła w języku C # / JavaScript / XBase w żadnej określonej kolejności, aw moich rozmowach z Pythonem nie jest to dla mnie żadna uwaga. To jest jak aparat ortodontyczny w innych językach - tak to działa, włóż rzeczy tak, jak mówią reguły, i osusz oczy, to moje podejście.

Alan B.
źródło