Pitone: Una ricetta per il codice enigmatico?
Ho sentito che il pitone è un grande linguaggio di programmazione che è così tanto superiore a tutto intorno ecc.
Il seguente codice in pitone è sollecitato come il più piccolo cliente & assistente di p2p del mondo.
# tinyp2p.py 1.0 (documentazione a http://freedom-to-tinker.com/tinyp2p.html)
importi il sistema, l'OS, SimpleXMLRPCServer, il xmlrpclib, il Re, hmac # (C) 2004, E.W. Felten
l'AR, pw, ricerca = (sys.argv, lambda u: hmac.new (sys.argv [1], u).hexdigest (), re.search)
pxy, xs = (xmlrpclib.ServerProxy, SimpleXMLRPCServer.SimpleXMLRPCServer)
def ls ("" del p=): filtro di ritorno (lambda n: ("" del p==) o ricerca (p, n), os.listdir (os.getcwd ()))
se l'AR [2]! = " cliente ": # autorizzazione: http://creativecommons.org/licenses/by-nc-sa/2.0
mio, fotoricettori, srv = (" http:// " +ar [3] +„: “+ar [4], AR [5:], lambda x: x.serve_forever ())
fotoricettore del def (x= []): ritorno ([(y in fotoricettori) o prs.append (y) per y nella x] o 1) e fotoricettori
def c (n): rinvii ((lambda f: (f.read (), f.close ()))(lima (n)))[0]
f=lambda p, n, a: (p==pw (mio))e (((n==0) e fotoricettore (a))o ((n==1) e [ls (a)]) o c (a))
def agosto (u): ritorno ((u==my) e fotoricettore ()) o fotoricettore (pxy (u).f (pw (u), 0, fotoricettore ([mio])))
fotoricettore () e [agosto per la s agosto (a fotoricettore () [0])]
(lambda SV: sv.register_function (f, “f„) o srv (SV))(xs ((l'AR [3], int (AR [4]))))
per il URL (l'AR [3]) in .f pxy (pw (AR [3]), 0, []):
per il F-N in filtro (lambda n: non n in ls (), ((URL) .f pxy (pw (URL), 1, AR [4]))[0]):
(lambda fi: fi.write ((URL) .f pxy (pw (URL), 2, F-N)) o fi.close ())(lima (F-N, “wc„))
Fonte: TinyP2P
Ho iniziato la mia carriera di programmazione con del linguaggio assemblatore (programmi molto piccoli di .com di scrittura e giocare con i cuties come masm e tasm), quindi mi sono mosso verso la C, persino disordine con i codici di byte del Java per divertimento.
Ma questa gemma meravigliosa di un battimento di programma (visualizzato sopra) la schifezza da me.
Il pitone, andante da questo esempio, osserva a me una ricetta infallibile per la generazione del codice confuso. Piuttosto leggerei le istruzioni 80×86, grazie molto!
PS. Programmatori del Java, potete distenderti. I programmatori del pitone (riprogrammatori dei oops secondo il tizio bayesano ingenuo) che scrivono tale codice non potranno mai effettuarlo. Così definitivamente sarete denominato dentro per sostituire tali “riprogrammatori„ e per riscrivere l'intero affare in Java (usi la parola che refactoring per ottenere la migliore trazione con l'amministrazione).
Archivato nell'ambito di umore, software del Java, tecnologia, fotoricettore, servizi di fotoricettore |
|
RSS 2.0 |
Invii con la posta elettronica questo articolo
Potete anche gradire leggere |


Aggiunga ai favoriti di Technorati

































13 aprile 2005 al 3:55
Sono un programmatore del Java (e un pitone del occasioanl/jython uno). Ma questo non è realmente giusto. Si può scrivere il codice confuso in tutta la lingua. Questo codice è come quando redigete le dichiarazioni multiple in una linea in tutta la lingua di stile di C (come in Java). O potete annidare molte chiamate di metodo, che non fate normalmente se voi codice maintanable del wan't.
Questo codice è destinato per essere compatto e non readible o mantenibile. Non ci sono blocchi (nessun rientranze) i metodi della soltanto una fodera e funzioni di lambda (in linea definita). Il pitone sembra buon quando lo programmate nel giusto, stile standard. E ci è una tal cosa, appena come con Java (benchè ci siano alcune contraddizioni fastidiose, come qualche gente e lo stdlib usa caso del cammello qui e sottolinea là, ecc).
13 aprile 2005 al 5:06
Sia sicuro interferire il rimprovero leggibile
:
http://www.mechanicalcat.net/richard/log/Python/Ugly_Python
… meraviglia se quel funziona in Jython?
13 aprile 2005 al 5:14
@Laszlo Marai
> ma questo non è realmente giusto.
La vita non è giusta neanche
BTW: Avete accennato che il codice è destinato per essere compatto e non leggibile o maintable. Allora perché lo ha codificato in pitone? Perché non in del linguaggio assemblatore? Sarebbe stato molto più veloce e più compatto.
Tutto il codice scritto nel linguaggio ad alto livello dovrebbe essere leggibile e maintable.
Dubito seriamente che potete abbinare questo livello di confusione in Java. I diavoli I possono persino leggere decompiled confuso (usando i obfuscators standard; non dal programmatore) Java codifichi correttamente.
PS: Sia sicuro controllare le categorie che questo alberino è sotto.
13 aprile 2005 al 5:32
Da http://www.gamedev.net/hosted/javaextreme/obfpoll.htm:
importazione java.awt.*; importazione java.util.*; il codice categoria pubblico C estende la pagina {data di D=new della data (); t vuoto (data d) {D=d; ridipinga ();}raddoppi P=Math.PI, A=P/2, la a, la c, U=.05; int W, H, m., R; doppia E (int a, int u) {ritorno (3*P/2+2*P*a/u)% (2*P);}n vuota (grafici g, doppia q, doppia s) {g.fillPolygon (nuovo int [] {H (s, q), H (U, q+A), H (U, q+3*A)}, nuovo int [] {J (s, q), J (U, q+A), J (U, q+3*A)}, 3);}vernice vuota del pubblico (grafici g) {colore C=SystemColor.control; g.setColor (C); g.fillRect (0.0, W=size () .width, H=size () .height); W-=52; H-=52; R=Math.min (With2, H/2); g.translate (With2+25, H/2+36); g.setColor (C.darker ()); per (m=0; javac C.java di m.
C> Java C
Autore & chi si sottomette: ″ di David M. Hewitt/1999
13 aprile 2005 al 6:37
non il più breve p2p app, là è almeno più breve in rubino ed ancora più breve in Perl.
Vedi
http://ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-talk/123945
per il primo, non posso trovare gli ultimi.
Il BTW, fare questo cose in pitone è più impressionante.
13 aprile 2005 al 7:08
Avete selezionato che cosa è probabilmente il singolo bello pezzo obsfucated del codice del pitone in atto e sta tentando di fare una generalizzazione circa l'intera lingua basata su esso. È follia.
> perché non in del linguaggio assemblatore? Sarebbe stato molto più veloce e più compatto.
Avrebbe preso lungamente, richiesto molte altre linee e sarebbe stato limitato a funzionare su una piattaforma specifica.
> tutto il codice scritto nel linguaggio ad alto livello dovrebbe essere leggibile e maintable.
Più follia. Codice leggibile e mantenibile del *encourages* di sintassi del pitone, non lo richiede.
3 ottobre 2007 al 7:21
Tendo ad essere d'accordo con l'articolo. Abbia uno sguardo agli esempi nelle lezioni private del pitone:
ritorno “; „ .join ([“%s=%s„ % (K, v) per K, v in params.items ()])
Questa dichiarazione ha potuto facilmente essere redatta usando un ciclo ed essere molto più facile da capire. Sembra essere fredda al pitone che i programmatori provano a scrivere l'intero programma in una linea e la sintassi della lingua sembra essere progettata che senso.
Java usa le parole chiavi inglesi normali che la rende meno crytic.