czego nie lubicie w perlu?
Stachu 'Dozzie' K. - 07-03-2007 00:07
On 06.03.2007, Twelve Hungry Mammoths <someone@microsoft.com> wrote: > On Tue, 06 Mar 2007 19:40:37 +0100, Stachu 'Dozzie' K. ><dozzie@dynamit.im.pwr.wroc.pl.nospam> wrote: >>> >>> Głównie to, co powoduje że jest cienki jak barszcz do dużych projektów: >>> >>> 1. brak narzędzi do zarządzania większą ilością kodu. To wynika z >>> chaotyczności języka, przekazywania argumentów jako tablic itd. - koniec >>> końców brakuje czegoś w rodzaju eclipsa/netbeana czy innego ide. > > na wstepie wyjasnie, ze na codzien uzywam eclipse do kodowania w Javie, > wiec przez IDE wlasnie to rozumiem. > >> Możesz wyjaśnić, co dokładnie przydatne jest w kobylastych IDE? > > znam dowcip o muchach, ale IMHO to, ze znakomita wiekszosc zawodowych > programistow korzysta z nich na codzien swiadczy, ze duzo fajnych > ficzerow, ktore usprawniaja i przyspieszaja prace. z kilkudziesieciu > programistow, ktorych znam, nie slyszalem, zeby ktokolwiek _nie_ korzystal > na codzien z IDE.
Moim potrzebom chyba żadne IDE nie sprostałoby. Eclipse ma zbyt biedny edytor i jest za ciężkie, co je dyskwalifikuje z miejsca, a z pozostałych (z wyjątkiem Sun Studio) żadne nie poradzi sobie z podświetlaniem składni czterech używanych przeze mnie języków.
> tu pojawiaja sie tez kwestie jezykowe. np. Java jest pewnie duzo bardziej > podatna na IDE-owosc, ze wzgledu na latwosc przetwarzania zrodel
Wynikający z właściwości języka. Zwróć uwagę na to, że Java to prawie język bezkontekstowy. C++ i Perl już bezkontekstowe nie są, choć C++ jest na tyle popularny, żeby dorobić się lepszych lub gorszych parserów do podpowiadaczy kodu i refaktoryzatorów.
> i > koszmarny stopien przegadania. Java ma tez zreszta duzo bardziej wypasione > IDE ze wzgledu na popularnosc. > >> Integracja z Subversion, > > integracja z systemem kontroli wersji bardzo sie przydaje, szczegolnie > przy nietrywialnych konfliktach czy intensywnym korzystaniu z bardziej > zaawansowanych ficzerow, jak branche czy tagi. szczerze mowiac nie > wyobrazam sobie korzystania z commandline'owego klienta cvs do tego typu > zadan.
A ja sobie nie wyobrażam korzystania z biednego edytorka dowolnego IDE (z wyjątkiem Sun Studio, gdzie można użyć Vima i XEmacsa), za to commandline'owego klienta tego czy innego systemu kontroli wersji -- i owszem. Co więcej, używam na codzień. Trzech różnych systemów.
> pewnie sie da, ale na 100% w IDE bedzie latwiej i szybciej.
Jakoś sobie nie wyobrażam.
>> kiedy ja potrzebuję gita albo svk? > > jezeli korzystasz z tak egzotycznego systemu, ze nie ma wtyczek dla > popularnych IDE to coz... Twoj wybor.
Dlaczego zaraz egzotyczny? git jest używany przez ludzi od kernela, od ELinksa i stada innych projektów.
> dla mnie przy wyborze takich > narzedzi jak np. system kontroli wersji wsparcie dla niego w IDE stanowi > waznych czynnik. szczegolnie, jezeli ten system ma byc uzywany przez > zespol, nie samotnego strzelca.
Dla mnie najważniejsze są możliwości systemu kontroli wersji. A moje środowisko programistyczne potrafi sobie poradzić z praktycznie każdym systemem.
>> System budowania, > > odpalany jedna kombinacja klawiszy (Ctrl-B) albo wogole automatycznie > zamiast przechodzenia do osobnego okienka i szukania odpowiedniego > polecenia (conajmniej trzy kombinacje (Alt-Tab - strzalka - enter pod > warunkiem, ze caly czas wykonujemy jedno i to samo polecenie). biorac pod > uwage, ze ja projekt buduje kilkadziesiat razy dziennie, wole jedna > kombinacje.
Jakby nie dało się podbindować komendy do odpowiedniego klawisza.
>> w który użytkownik nie powinien ingerować, bo może >> stracić zmiany albo środowisko nie poradzi sobie w mieszanym >> (automat-manual) makefile'u, a użycie co dziwniejszych targetów >> (kopiowanie plików na zdalne maszyny, uruchamianie programu pod PVM >> i tym podobne) jest proste jak trzydzieści metrów drutu kolczastego >> w kieszeni? > > ponioslo Cie. kazde szanujace sie IDE potrafi odpalic makefile'a, > antfile'a, mavena czy dowolny inny skrypt lub program.
Ale wtedy trzeba dbać o plik reguł własnoręcznie. Po co wtedy IDE? A co z podświetlaniem składni pliku reguł?
>> A może edytor, który nie potrafi nawet zwijać kodu w takich >> granicach, jakich potrzebuję, > > tzn. w jakich?
Kolejne cztery bloki if. Od połowy poprzedniej funkcji prawie do końca funkcji bieżącej.
>> w zamian oferując zwijanie pojedynczych >> bloków {}, do czego _niezbędna_ jest myszka? > > eclipse potrafi wiecej.
To znaczy co konkretnie potrafi?
>> #v+ >> I'm afraid mod_perl will no more have it's "5 minutes" especially in >> late-growing web markets like Poland. Too complicated to use compared to >> PHP. Not so many features (sharing data in processes/threads) compared >> to Java. Not so popular and served only with Apache. >> #v- >> >> Zestaw argumentów podobnie bzdurny jak "Linux nie nadaje się do użytku, >> bo nie ma tylu sterowników co Windows, nie jest tak prosty w użyciu jak >> MacOS, nie ma tak stabilnego ABI jak Solaris i nie ma takiego wsparcia >> technicznego jak HP/UX". Znaczy z każdego konkurencyjnego projektu >> weźmiemy to, czego nie umie mod_perl. > > znow Cie ponioslo. kolega nie napisal, ze Perl nie nadaje sie do uzytku, > tylko ze moze sie spoznic na swoje 5 minut. na swoje tzw. okno > marketingowe.
A czy ja z tym dyskutuję? Ja wytykam głupi dobór braków. W każdym języku znajdzie się coś, co jest fajne, a w Perlu nie ma. Czy to znaczy, że Perl jest do dziadzi? W ten sposób można zdyskredytować Pythona, Rubyego, Javę (patrz niżej), C, C++, Haskella, OCamla, Tcla, Prologa, Adę i całą masę innych języków.
> poza tym Perl _jest_ bardziej skomplikowany niz PHP. watki _sa_ lepiej > zrobione w Javie. polemizuj z tymi tezami, a nie ze swoimi wymyslami nt. > Linuxa i Windows.
Przepraszam, ale dlaczego? I czy ja tu gdzieś zaprezentowałem jakieś wymysły? Zwróć, proszę, uwagę na to, że ja wcale nie twierdzę, że Perl ma dobrze zrobione wątki (bo raczej nie ma) czy że jest prosty (bo ewidentnie jest skomplikowany). Ale dlaczego, jakim prawem, jest porównywany do abstrakcyjnego, nieistniejącego języka złożonego ze wszystkich dobrych cech zebranych po wszystkich innych językach? Dlaczego Perl nie jest porządnie porównany z każdym językiem z osobna, tylko ze wszystkimi na raz?
Czy Java ma równie bogatą bibliotekę z klasami co CPAN? Czy narzuca czytelne formatowanie jak Haskell czy Python? Czy równie łatwo jest osadzić JSP w Apache'u co PHP? Czy pozwala na takie manipulacje systemem jak C? Czy gwarantuje niszczenie obiektów as-fast-as-possible, jak w C++? Czy ma wbudowane w _język_ (nie w bibliotekę) wsparcie dla wątków, tak jak ma Ada? Nie? No proszę, do dupy ten język.
Widać niedorzeczność argumentów tego typu?
> (nie wypowiadam sie nt. Apache, bo sie nie znam, ale > podejrzewam, ze sa tez inne serwery.)
mod_perl, z tego co wiem, zadziała pod wszystkim kompatybilnym z Apachem. W tym pod lighttpd. Ale mod_* nie nadają się do środowisk hostingowych, z którymi nieco mam do czynienia. Osobiście wolę FastCGI (ostatnio się do niego przekonałem).
>>> Z ogólnego narzekania, dodałbym jeszcze niską czytelność kodu, >> >> Nie umiesz pisać czytelnie w tym języku, to nie pisz w ogóle. Zasada >> prosta. Niska czytelność to nie właściwość Perla, tylko programisty. >> Perl zakłada, że programista nie kretyn i wie, co robi. > > w prawdziwym zyciu (w odroznieniu od bezproduktywnych dyskusji w usenecie) > masz stycznosc takze z kodem pisanym przez kretynow. czasem musisz go > uzyc, czasem zrozumiec, czasem niestety nawet konserwowac. > > nie mowie, ze kazdy jezyk powinien byc tak faszystowski jak Java, ale > warto czasem pamietac, ze programowanie to nie tylko sport indywidualny > czy wyczynowy. czasem trzeba grac zespolowo (-:
W innym miejscu tego wątku wspomniałem, że język należy dobierać biorąc pod uwagę między innymi umiejętności i nawyki innych programistów. Do kogo miałbyś pretensje, gdyby dziecko pocięło siebie lub inne dziecko żyletką? Do żyletki? Do dziecka? Czy do osoby, która rzeczonemu dziecku dała żyletkę do zabawy?
>> Python i Java >> mają inne założenia, może któreś z nich będzie ci pasować? > > LOL, uwazasz to za obelge?
A ty? I dlaczego zaraz za obelgę?
-- <Kosma> Niektórzy lubią dozziego... <Kosma> Oczywiście szanujemy ich. Stanislaw Klekot
=?ISO-8859-2?Q?Edward_Knia=BFycki?= - 07-03-2007 00:07
teodozjan napisał(a): > On 6 Mar, 21:44, Edward Kniażycki <e.t.kzbe...@gmx.net> wrote: >> teodozjan napisał(a):> [...] >>> Najbardziej perla uratowałoby środowisko typu Visual_* choćby płatne. >> A ActivePerl Pro Studio, lub choćby Komodo IDE nie spełniają tego kryterium? >>[...] > Komodo wygląda na bardzo dobrą aplikację ,ale nie widzę w niej > możliwości rysowania sobie interfejsu graficznego. Producenci nie > umieścili w reklamie? > Nie, rzeczywiście nie ma rysowania. Przypuszczam, że gdyby (Komodo) było wyłącznie edytorem Perla można by oczekiwać takiej funkcjonalności.
-- Pisząc do mnie usuń zbędne słowo z adresu
adam.twentus@gmail.com - 07-03-2007 00:07
> > <http://e-p-i-c.sourceforge.net/> > > Wtyczka do eclipse jest, ale uczciwie mówiąc nie wiem jak działa.
Działa kiepsko. Tzn. działa nieźle, jak na ograniczenia perla (parametry w metodach, por. php, pythona czy javę) ale to nie ten poziom szybkości wejścia w projekt dla nowego programisty, co jakiekolwiek podłe IDE do javy. Zresztą porównajcie możliwości obu perspektyw w ecli.
> Eclipse jest ostatnim narzędziem jakiego chciał bym używać... Już bym Â* > wolał użyć Visual Studio, a ta deklaracja ledwo mi przez klawiaturę Â* > przechodzi... ;-) Jak już muszę coś w javie, to wolę NetBeans, choć i to Â* > żre pamięć jak termity balsę///
No to dokup pamięć. Choćby z patriotycznej chęci poprawienia PKB w kraju :)
> Tak, wiem... Umbrello ma takie coś i dla hellowordlware nawet do działa Â* > ;-), ale niestety daleko temu do funkcjonalności z Rose'a :-(
Eee, o tym to nawet nie wspominałem. To jak z mówieniem o serwerze aplikacyjnym - "a po co ci serwer aplikacyjny". "Prawdziwi faceci nie tracą czasu na projektowanie, oni od razu kodują" ;)
A serio, z umbrello do perla jeszcze jako-tako pójdzie, niestety częściej jest potrzeba w drugą stronę, przekopać się przez kod, jakiś ogólny szkielet aktualnego rozwiązania, nowe, refactoring.
Taki znowu Kdevelop (darmowe linuxowe jakby-ide) - gdy perla mamy otwartego jako projekt - potrafi całá¸ąiem ładnie robić outline i schemat dziedziczenia klas. Ale to jeszcze nie refactoring.
-- adam
Vava - 07-03-2007 00:07
On Tue, 06 Mar 2007 23:06:33 +0100, teodozjan <teodozjan@gmail.com> wrote:
> On 6 Mar, 21:44, Edward Kniażycki <e.t.kzbe...@gmx.net> wrote: >> teodozjan napisał(a):> [...] >> > Najbardziej perla uratowałoby środowisko typu Visual_* choćby płatne. >> A ActivePerl Pro Studio, lub choćby Komodo IDE nie spełniają tego >> kryterium? >> >> Ed. >> -- >> Pisząc do mnie usuń zbędne słowo z adresu > > Komodo wygląda na bardzo dobrą aplikację ,ale nie widzę w niej > możliwości rysowania sobie interfejsu graficznego. Producenci nie > umieścili w reklamie?
W Komodo 3 było ustrojstwo do Tk... Funkcjonalnie zbliżone do tego z VBA w MS Office... http://aspn.activestate.com/ASPN/doc...uibuilder.html
Z 4-ki został wyłączony: http://support.activestate.com/faq/no-guibuilder-in-4-0
I słusznie, bo był to najmniej potrzebny dodatek do Komodo... :-P
Zrobiłem sporo aplikacji perlowych z rozbudowanym interfejsem w Tk i jakoś wolę to pisać z palca niż klikać. Więcej - tak jest szybciej i lepiej, a wielu rzeczy klikalne interfejsy (żadne) nie oferują...
Perl nie jest językiem do tworzenia aplikacji GUI'owych... Jak trzeba zrobić taką, gdzie GUI gra główną rolę, to lepiej jest się zastanowić nad C++/Delphi. Perl łączony z Tk/Gtk/Qt/Win32::GUI sprawia się nieźle, ale tylko w zastosowaniach, gdy GUI jest dodatkiem do głównego kodu. Tworzenie interfejsiku *.ui i doklejanie do tego perlowego kodu wydaje mi się bezsensowne i mało wygodne... Tk w perlu bardzo lubię, ale nie wyobrażam sobie, jak interfejs klikalny mógłby mnie wesprzeć w tym co robię - raczej przeszkadza.
Natomiast wsparcie jakie Komodo+PDK daje do tworzenia i debugowania aplikacji client-server (z AJAXem włącznie bije na głowę wszystko, co w innych IDE widziałem, zarówno możliwościami, jak i wygodą użycia).
Acha - w PDK jest VBScript Converter, głównie przeznaczony do konwersji makr VBA nagrywanych w MS Office, ale radzi sobie dobrze z wyklikiwalnymi interfejsami VBA.
http://aspn.activestate.com/ASPN/doc..._overview.html
Jeszcze nie miałem problemu z żadnym ze skryptów dostępnych na MSDN, radzi sobie z obiektami OLE, COM i .NET. Dla mnie najbardziej jest przydatny przy rozgryzaniu nieudokumentowanych, lub kiepsko udokumentowanych interfejsów OLE/COM - nagrywamy makro, konwertujemy i już wiemy jak oskryptowywać np. Lotus Notes ;-)
Pozdrawiam -- Vava Wawrzyniec Żurowski Victoria vale, et ubique es, suaviter sternutas
adam.twentus@gmail.com - 07-03-2007 00:07
> > Z ogólnego narzekania, dodałbym jeszcze niską czytelność kodu, > > Nie umiesz pisać czytelnie w tym języku, to nie pisz w ogóle. Zasada > prosta. Niska czytelność to nie właściwość Perla, tylko programisty.
Bardzo naiwne. Poszukaj sobie tekstu Kena Arnolda "Style is substance" (również w świeżej książce Joela Spolskiego "Sztuka pisania oprogramowania" - polecam na wieczorne czytadło).
Tak z innej beczki - w iluosobowym zespole programistów perla masz okazję pracować, jak duże są wasze projekty? Nie chodzi mi o licytację liczb, tylko z ciekawości pytam, o lepszy kontekst twoich wypowiedzi.
> Perl zakłada, że programista nie kretyn i wie, co robi. Python i Java > mają inne założenia, może któreś z nich będzie ci pasować?
A co mają te założenia do faktu, że masz duże projekty, które musisz rozwijać? Przepiszesz w czynie społecznym w weekend na p/j? Ahoj przygodo, powodzenia, tylko zakomituj przed 7 rano w poniedziałek.
-- adam
=?ISO-8859-2?Q?Zbigniew_Kempczy=F1ski?= - 08-03-2007 00:03
Użytkownik Twelve Hungry Mammoths napisał:
> pod uwage, ze ja projekt buduje kilkadziesiat razy dziennie, wole > jedna kombinacje.
To tak trochę dla śmiechu - wg Twojego adresu email (someone@microsoft.com) wynika, że już robicie następcę Visty? :) -- ============================= Zbigniew Kempczyński http://it.marton.pl/wegorz/ =============================
Maciej Misiak - 08-03-2007 00:03
> On 6 Mar 2007 18:11:31 +0100, Maciej Misiak wrote: > > >>> Ja się tego raz dwa oduczyłem kiedy takie na przykład komunikaty błędów: > >>> print "Nieprawidlowy format parametru abc, powinien byc ABSOLUTE albo > >>> RELATIVE" > >>> if $abc!~/^(ABSOLUTE|RELATIVE)$/ > >>> zaczęły mi chować ifa za prawy brzeg ekranu. > >> > >> Trzeba kupic monitor, ktory obsluguje wyzsze rozdzielczosci ;-) > > > > Oj bo wezmę zaraz coś ciężkiego... :P To niech będzie coś poważnego: > > > > $ret_hash{$current_key} .= err("subnetworkType($found[2])", "should be > > TOPO_SINGLETON, TOPO_CHAIN, TOPO_PSR, TOPO_OPEN_PSR, TOPO_SPRING, > > TOPO_OPEN_SPRING or TOPO_MESH") if > > $found[2]!~/^TOPO_SINGLETON|TOPO_CHAIN|TOPO_PSR|TOPO_OPEN_PSR| TOPO_SPRING|TOPO_OPEN_SPRING|TOPO_MESH$/ > > > > Na to chyba bym musiał mieć coś 40-calowego... > > To trzeba kupić klawiaturę, w której Enter się nie zacina :-> > Ja formatuję kod tak, że nie wyłazi poza kolumnę 80 (tak, nawyk z czasów > kart perforowanych ;->)...
No wiedziałem, po prostu czułem w kościach, że jak pokażę coś dłuższego to się czepicie 80 znaków :P W takiej sytuacji ręce mi opadły i faktycznie nie mam dobrego argumentu przeciwko używaniu if na końcu linii zamiast na początku. Bardzo dobra konstrukcja. Każdy powinien jej używać. ;>
-- grizzley
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
hubert depesz lubaczewski - 08-03-2007 00:03
On 2007-03-06, Maciej Misiak <grizzleyWYTNIJTO@op.pl> wrote: > Oj bo wezmę zaraz coś ciężkiego... :P To niech będzie coś poważnego: > $ret_hash{$current_key} .= err("subnetworkType($found[2])", "should be > TOPO_SINGLETON, TOPO_CHAIN, TOPO_PSR, TOPO_OPEN_PSR, TOPO_SPRING, > TOPO_OPEN_SPRING or TOPO_MESH") if > $found[2]!~/^TOPO_SINGLETON|TOPO_CHAIN|TOPO_PSR|TOPO_OPEN_PSR| TOPO_SPRING|TOPO_OPEN_SPRING|TOPO_MESH$/ > Na to chyba bym musiał mieć coś 40-calowego...
1. nie czepiam sie if'ów odwróconych czy nie. 2. nie czepiam się szerokości
a teraz czego się czepiam: sorry, ale w/g mnie ten kod jest świetnym przykładem kodu przepisania. a jak ci dojdzie kolejny TOPO_* ?
nie lepiej:
my %type_ok = ( TOPO_SINGLETON => 1, TOPO_CHAIN => 1, TOPO_PSR => 1, TOPO_OPEN_PSR => 1, TOPO_SPRING => 1, TOPO_OPEN_SPRING => 1, TOPO_MESH => 1, );
unless ($type_ok{ $found[2] }) { $ret_hash{$current_key} .= err( "subnetworkType($found[2])", "should be " . join(', ', sort keys %type_ok) ); }
tzn. ja widzę, że więcej linijek, ale możesz to sobie połączyć w pojedyncze gdzie ci wygodnie. chodzi mi o to, że takie testy i potem wypisywanie lepiej (imnsho) robić na pojedynczej liście znanych/akceptowanych elementów.
w szczególności, jeśli ta tablica jest mała (jak tu) to można wręcz:
my @type_ok = qw( TOPO_CHAIN TOPO_MESH TOPO_OPEN_PSR TOPO_OPEN_SPRING TOPO_PSR TOPO_SINGLETON TOPO_SPRING );
unless (grep { $_ eq $found[2] } @type_ok) { $ret_hash{$current_key} .= err( "subnetworkType($found[2])", "should be " . join(', ', @type_ok) ); }
depesz
-- quicksil1er: "postgres is excellent, but like any DB it requires a highly paid DBA. here's my CV!" :) http://www.depesz.com/ - blog dla ciebie (i moje CV)
Robert Garwacki - 08-03-2007 00:03
Adam Osuchowski napisał(a): > moldovenu wrote: >> Głównie to, co powoduje że jest cienki jak barszcz do dużych projektów: > > Niestety z przykrością muszę Ci przyznać rację. Perl stracił swoją > szansę przez zbyt długie stanie w miejscu. Minęło 13 lat od wydania > wersji 5 i prawie nic się nie zmieniło.
To, że coś nie ewoluuje, nie oznacza jeszcze straconej szansy. Taki np. rekin wygląda tak samo jak kilkaset milionów lat temu i ma sie całkiem dobrze.
R
Martin Lukasik - 08-03-2007 00:03
> Na to chyba bym musiał mieć coś 40-calowego...
Hehe, w 1920x1200 nie zawija mi :-) Ale w pracy mi zawija ;(
Ale tak abstrahujac od rozdzielczosci -- slyszales o "Enter"? ;-)
m.
-- Marcin Lukasik, marcin na milea kropka pl http://milea.pl -- sieci bezprzewodowe
``Be who you are and say what you feel, because those who mind don't matter and those who matter don't mind.''
Maciej Misiak - 08-03-2007 00:03
> > Na to chyba bym musiał mieć coś 40-calowego... > > Hehe, w 1920x1200 nie zawija mi :-) > Ale w pracy mi zawija ;( > > Ale tak abstrahujac od rozdzielczosci -- slyszales o "Enter"? ;-)
Coś tam chyba na studiach na zajęciach było, chyba na podstawach przedsiębiorczości, ale akurat długopisu zapomniałem i jakoś umknęło... To jakiś indeks giełdowy, nie? :P
-- grizzley
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Maciej Misiak - 08-03-2007 00:03
> On 2007-03-06, Maciej Misiak <grizzleyWYTNIJTO@op.pl> wrote: > > Oj bo wezmÄ� zaraz coĹ� ciÄ�żkiego... :P To niech bÄ�dzie coĹ� poważnego: > > $ret_hash{$current_key} .= err("subnetworkType($found[2])", "should be > > TOPO_SINGLETON, TOPO_CHAIN, TOPO_PSR, TOPO_OPEN_PSR, TOPO_SPRING, > > TOPO_OPEN_SPRING or TOPO_MESH") if > > $found[2]!~/^TOPO_SINGLETON|TOPO_CHAIN|TOPO_PSR|TOPO_OPEN_PSR| TOPO_SPRING|TOPO_OPEN_SPRING|TOPO_MESH$/ > > Na to chyba bym musiaĹ� mieÄ� coĹ� 40-calowego... > > 1. nie czepiam sie if'ów odwróconych czy nie. > 2. nie czepiam siÄ� szerokoĹ�ci > > a teraz czego siÄ� czepiam: > sorry, ale w/g mnie ten kod jest Ĺ�wietnym przykĹ�adem kodu przepisania. > a jak ci dojdzie kolejny TOPO_* ? > > nie lepiej: > > my %type_ok = ( > TOPO_SINGLETON => 1, > TOPO_CHAIN => 1, > <...>
Dzięki za wskazówki. To ja też pominę, że to tylko do przykładu długiej linii było i możemy pogadać o testach. Cały system, z którego wziąłem ten przykład, opiera się na idei jednego regexpa dla każdej zmiennej więc raczej ciężko będzie tam użyć konstrukcji. Tzn. w pliku konfiguracyjnym jest hash hashy hashy tablic hashy... :), gdzie liśćmi są właśnie regexpy. I pozwala przetestować praktycznie wszystkie możliwe dane zawarte w zmiennych za pomocą regexpa, np.: Cyfra z przedziału 0..7 lub 'Undefined', 'Unavailable': /[0-7]|Undefined|Unavailable/ adres IP lub pusty string: /(?:\d{1,3}\.){3}\d{1,3}|^$/ itp. Jak na razie jedyna reguła, która mi spędza sen z powiek i której nie byłem w stanie zawrzeć w regexpie, jak zresztą powyżej widać, to (jakiś czas temu poruszałem to na grupie) zmienna int z zakresu x..y. Jeśli (x,y)=(0,7) to jeszcze łatwo, ale (x,y)=(1,2000) już jest dyskusyjne, natomiast (x,y)=(0,10000000)? Jak na razie stosuję obejście \d+ i zajmuję się innymi sprawami, ale kiedyś będzie trzeba to poprawić. Być może wtedy przyjdzie czas na zmianę podejścia i wtedy będzie więcej kodu, a mniej regexpów.
-- grizzley
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Rafal Kupka - 08-03-2007 00:03
Maciej Misiak napisał: Witam,
[ciach o długich liniach itp]
> Jak na razie jedyna reguła, która mi spędza sen z powiek i której nie byłem w > stanie zawrzeć w regexpie, jak zresztą powyżej widać, to (jakiś czas temu > poruszałem to na grupie) zmienna int z zakresu x..y. Jeśli (x,y)=(0,7) to > jeszcze łatwo, ale (x,y)=(1,2000) już jest dyskusyjne, natomiast > (x,y)=(0,10000000)? Jak na razie stosuję obejście \d+ i zajmuję się innymi > sprawami, ale kiedyś będzie trzeba to poprawić. Być może wtedy przyjdzie czas na > zmianę podejścia i wtedy będzie więcej kodu, a mniej regexpów.
Na szybko, używając niezalecanych konstrukcji i w ogóle nieładnie: $perl -ne 'print "P: $1\n" if m{(\d+)[^\d] (?(?{ ($^N>1) && ($^N<2000) })|^$)}x' 0 1 2 P: 2 1000 P: 1000 1999 P: 1999 2000 10000
Pozdrawiam, Kupson
Twelve Hungry Mammoths - 08-03-2007 00:03
On Wed, 07 Mar 2007 08:52:35 +0100, Zbigniew Kempczyński <Z.Kempczynski@NOSPAMmarton.pl> wrote: > >> pod uwage, ze ja projekt buduje kilkadziesiat razy dziennie, wole >> jedna kombinacje. > > To tak trochę dla śmiechu - wg Twojego adresu email > (someone@microsoft.com)
nie powinienes wierzyc we wszystko, co czytasz (-:
> wynika, że już robicie następcę Visty? :)
w microsofcie robi sie tak: http://moishelettvin.blogspot.com/20...-crapfest.html
pzdr szeryf
Twelve Hungry Mammoths - 08-03-2007 00:03
On Tue, 06 Mar 2007 23:31:07 +0100, Stachu 'Dozzie' K. <dozzie@dynamit.im.pwr.wroc.pl.nospam> wrote: > > Moim potrzebom chyba żadne IDE nie sprostałoby.
heh, po takim postawieniu sprawy w zasadzie nie ma o czym dalej dyskutowac.
> Eclipse ma zbyt biedny > edytor
coz, vim jest niedoscigalny z definicji i kazdy inny edytor jest w porownaniu z nim biedny. ale slyszalem o wtyczce do eclipse emulujacej klawiszologie vima. ale nie wiem jak dziala. pewnie biednie.
> i jest za ciężkie, co je dyskwalifikuje z miejsca,
bez przesady. programisci maja (powinni miec) wypasione kompy.
> a z pozostałych (z wyjątkiem Sun Studio) żadne nie poradzi sobie > z podświetlaniem składni czterech używanych przeze mnie języków.
LOL. mam w pracy taki prosciutki edytorek Context, ktory ma podswietlanie kilkudziesieciu jezykow. EditPlus tez ma gdzies tyle. UltraEdit podobnie. SciTE tudziez. jakiez to czery jezyki, jezeli mozna wiedziec?
btw. z podswietlaniem skladni Perla nie radzi sobie nawet vim. wiem, bo golfowalem w vimie. z normalnym kodem Perla zarowno Context, jak i UltraEdit radza sobie calkiem niezle.
>> integracja z systemem kontroli wersji bardzo sie przydaje, szczegolnie >> przy nietrywialnych konfliktach czy intensywnym korzystaniu z bardziej >> zaawansowanych ficzerow, jak branche czy tagi. szczerze mowiac nie >> wyobrazam sobie korzystania z commandline'owego klienta cvs do tego typu >> zadan. > > A ja sobie nie wyobrażam korzystania z biednego edytorka dowolnego IDE > (z wyjątkiem Sun Studio, gdzie można użyć Vima i XEmacsa), za to > commandline'owego klienta tego czy innego systemu kontroli wersji -- > i owszem. Co więcej, używam na codzień. Trzech różnych systemów.
mam wrazenie, ze rozmawiamy o zupelnie roznych rzeczach.
>> dla mnie przy wyborze takich >> narzedzi jak np. system kontroli wersji wsparcie dla niego w IDE stanowi >> waznych czynnik. szczegolnie, jezeli ten system ma byc uzywany przez >> zespol, nie samotnego strzelca. > > Dla mnie najważniejsze są możliwości systemu kontroli wersji. A moje > środowisko programistyczne potrafi sobie poradzić z praktycznie każdym > systemem.
swietnie. ale mam wrazenie, ze takie podejscie (wynajdujemy zestaw mozliwie egzotycznych narzedzi i kazdy sobie radzi jak umi) nie sprawdziloby sie przy wiekszym zespole.
>>> w który użytkownik nie powinien ingerować, bo może >>> stracić zmiany albo środowisko nie poradzi sobie w mieszanym >>> (automat-manual) makefile'u, a użycie co dziwniejszych targetów >>> (kopiowanie plików na zdalne maszyny, uruchamianie programu pod PVM >>> i tym podobne) jest proste jak trzydzieści metrów drutu kolczastego >>> w kieszeni? >> >> ponioslo Cie. kazde szanujace sie IDE potrafi odpalic makefile'a, >> antfile'a, mavena czy dowolny inny skrypt lub program. > > Ale wtedy trzeba dbać o plik reguł własnoręcznie.
co to jest plik regul?
> Po co wtedy IDE? A co > z podświetlaniem składni pliku reguł?
eclipse to umie. do antfile'i ma nawet podpowiadanie skladni.
>>> A może edytor, który nie potrafi nawet zwijać kodu w takich >>> granicach, jakich potrzebuję, >> >> tzn. w jakich? > > Kolejne cztery bloki if. Od połowy poprzedniej funkcji prawie do końca > funkcji bieżącej.
LOL. to, ze vim umozliwia (przypadkiem) tego typu kombinacje alpejskie, nie oznacza, ze komus jest to niezbedne do pracy (-:
>>> w zamian oferując zwijanie pojedynczych >>> bloków {}, do czego _niezbędna_ jest myszka? >> >> eclipse potrafi wiecej. > > To znaczy co konkretnie potrafi?
jak juz pisalem, na codzien nie korzystam, ale potrafi zwijac sekcje importow, komentarze javadoc i kazdy element hierarchii kodu (klasa/metoda/blok).
>> znow Cie ponioslo. kolega nie napisal, ze Perl nie nadaje sie do uzytku, >> tylko ze moze sie spoznic na swoje 5 minut. na swoje tzw. okno >> marketingowe. > > A czy ja z tym dyskutuję? Ja wytykam głupi dobór braków.
niemniej jednak sa to braki. o tym wlasnie mial byc ten watek.
> W każdym języku > znajdzie się coś, co jest fajne, a w Perlu nie ma. Czy to znaczy, że > Perl jest do dziadzi?
nie, to znaczy, ze Perl ma braki.
>> poza tym Perl _jest_ bardziej skomplikowany niz PHP. watki _sa_ lepiej >> zrobione w Javie. polemizuj z tymi tezami, a nie ze swoimi wymyslami nt. >> Linuxa i Windows. > > Przepraszam, ale dlaczego? I czy ja tu gdzieś zaprezentowałem jakieś > wymysły?
sorry, uzylem zlego slowa. wymyslami nazwalem zastosowana przez Ciebie konstrukcje erystyczna polegajaca na zastapienie wypowiedzi dyskutanta swoja wlasna, niby analogiczna, ale latwiejsza do obalenia.
> Zwróć, proszę, uwagę na to, że ja wcale nie twierdzę, że Perl > ma dobrze zrobione wątki (bo raczej nie ma) czy że jest prosty (bo > ewidentnie jest skomplikowany). Ale dlaczego, jakim prawem,
prawem wolnosci wypowiedzi zapewne (-:
> jest > porównywany do abstrakcyjnego, nieistniejącego języka złożonego ze > wszystkich dobrych cech zebranych po wszystkich innych językach? > Dlaczego Perl nie jest porządnie porównany z każdym językiem z osobna, > tylko ze wszystkimi na raz?
bo takie porownanie nie zmiesciloby sie w jednym akapicie, a autorowi chodzilo po prostu o wskazanie kilku wad Perla.
> Czy Java ma równie bogatą bibliotekę z klasami co CPAN? Czy narzuca > czytelne formatowanie jak Haskell czy Python? Czy równie łatwo jest > osadzić JSP w Apache'u co PHP? Czy pozwala na takie manipulacje > systemem jak C? Czy gwarantuje niszczenie obiektów as-fast-as-possible, > jak w C++? Czy ma wbudowane w _język_ (nie w bibliotekę) wsparcie dla > wątków, tak jak ma Ada? Nie? No proszę, do dupy ten język. > > Widać niedorzeczność argumentów tego typu?
skadze. masz prawo zestawiac wady (i rzekome wady) dowolnych jezykow w dowolny sposob i wyciagac z nich dowolne wnioski. co w tym zlego?
pzdr szeryf
Stachu 'Dozzie' K. - 08-03-2007 00:03
On 07.03.2007, Twelve Hungry Mammoths <someone@microsoft.com> wrote: > On Tue, 06 Mar 2007 23:31:07 +0100, Stachu 'Dozzie' K. ><dozzie@dynamit.im.pwr.wroc.pl.nospam> wrote: >> >> Moim potrzebom chyba żadne IDE nie sprostałoby. > > heh, po takim postawieniu sprawy w zasadzie nie ma o czym dalej dyskutowac. > >> Eclipse ma zbyt biedny >> edytor > > coz, vim jest niedoscigalny z definicji i kazdy inny edytor jest w > porownaniu z nim biedny.
Zapominasz o Emacsie.
> ale slyszalem o wtyczce do eclipse emulujacej > klawiszologie vima. ale nie wiem jak dziala. pewnie biednie.
Ta wtyczka emuluje nie klawiszologię Vima, a klawiszologię vi. A goły vi jest mało wygodny. Brakowałoby mi skakania po plikach, osadzonego interpretera Perla (albo chociaż Tcla czy Rubyego), zwijania kodu klawiaturą i w taki sposób, w jaki chcę, wielu schowków, edycji bloków tekstu (w odróżnieniu od zbioru wierszy; <C-v> w terminologii Vima) i stada innych rzeczy.
>> i jest za ciężkie, co je dyskwalifikuje z miejsca, > > bez przesady. programisci maja (powinni miec) wypasione kompy.
Programiści powinni mieć najsłabsze możliwe komputery. Bo potem nadziewam się na linuksowy program do kontroli UPS-a pisany w Javie.
>> a z pozostałych (z wyjątkiem Sun Studio) żadne nie poradzi sobie >> z podświetlaniem składni czterech używanych przeze mnie języków. > > LOL. mam w pracy taki prosciutki edytorek Context, ktory ma podswietlanie > kilkudziesieciu jezykow. EditPlus tez ma gdzies tyle. UltraEdit podobnie. > SciTE tudziez. jakiez to czery jezyki, jezeli mozna wiedziec?
A które *środowisko* sobie poradzi z tyloma językami? Bo ConTEXT i SciTE to tylko edytory.
> btw. z podswietlaniem skladni Perla nie radzi sobie nawet vim.
Zgadza się. Pewnie dlatego, że Perl nie jest językiem bezkontekstowym, a najprawdopodobniej nawet kontekstowym. Parser Perla pracuje heurystycznie. Vimowa definicja składni to na dobrą sprawę opis języka bezkontekstowego. W takich warunkach naprawdę trudno o podświetlanie składni dokładne odwzorowujące język.
> wiem, bo > golfowalem w vimie. z normalnym kodem Perla zarowno Context, jak i > UltraEdit radza sobie calkiem niezle. > >>> integracja z systemem kontroli wersji bardzo sie przydaje, szczegolnie >>> przy nietrywialnych konfliktach czy intensywnym korzystaniu z bardziej >>> zaawansowanych ficzerow, jak branche czy tagi. szczerze mowiac nie >>> wyobrazam sobie korzystania z commandline'owego klienta cvs do tego typu >>> zadan. >> >> A ja sobie nie wyobrażam korzystania z biednego edytorka dowolnego IDE >> (z wyjątkiem Sun Studio, gdzie można użyć Vima i XEmacsa), za to >> commandline'owego klienta tego czy innego systemu kontroli wersji -- >> i owszem. Co więcej, używam na codzień. Trzech różnych systemów. > > mam wrazenie, ze rozmawiamy o zupelnie roznych rzeczach.
Mówimy o używaniu IDE i używaniu środowiska sklejanego z wielu narzędzi. I o tym, że ty sobie nie wyobrażasz używania cmdline'owych narzędzi, podczas gdy dla mnie to wygodna codzienność. I że ja nie wyobrażam sobie rezygnacji z potężnego edytora, co z kolei jest codziennością dla ciebie.
>>>> w który użytkownik nie powinien ingerować, bo może >>>> stracić zmiany albo środowisko nie poradzi sobie w mieszanym >>>> (automat-manual) makefile'u, a użycie co dziwniejszych targetów >>>> (kopiowanie plików na zdalne maszyny, uruchamianie programu pod PVM >>>> i tym podobne) jest proste jak trzydzieści metrów drutu kolczastego >>>> w kieszeni? >>> >>> ponioslo Cie. kazde szanujace sie IDE potrafi odpalic makefile'a, >>> antfile'a, mavena czy dowolny inny skrypt lub program. >> >> Ale wtedy trzeba dbać o plik reguł własnoręcznie. > > co to jest plik regul?
Plik z regułami budowania. Makefile albo XML do Krowy^H^H^H^H^HAnta.
>> Po co wtedy IDE? A co >> z podświetlaniem składni pliku reguł? > > eclipse to umie. do antfile'i ma nawet podpowiadanie skladni.
A ma podświetlanie składni do makefile'a, SConsa albo autotools?
>>>> A może edytor, który nie potrafi nawet zwijać kodu w takich >>>> granicach, jakich potrzebuję, >>> >>> tzn. w jakich? >> >> Kolejne cztery bloki if. Od połowy poprzedniej funkcji prawie do końca >> funkcji bieżącej. > > LOL. to, ze vim umozliwia (przypadkiem) tego typu kombinacje alpejskie, > nie oznacza, ze komus jest to niezbedne do pracy (-:
Owszem, jest niezbędne. Zdarza mi się przy pisaniu jednej funkcji spojrzeć do deklaracji zmiennych w drugiej funkcji.
>>>> w zamian oferując zwijanie pojedynczych >>>> bloków {}, do czego _niezbędna_ jest myszka? >>> >>> eclipse potrafi wiecej. >> >> To znaczy co konkretnie potrafi? > > jak juz pisalem, na codzien nie korzystam, ale potrafi zwijac sekcje > importow, komentarze javadoc i kazdy element hierarchii kodu > (klasa/metoda/blok).
To w takim razie malutko.
>>> znow Cie ponioslo. kolega nie napisal, ze Perl nie nadaje sie do uzytku, >>> tylko ze moze sie spoznic na swoje 5 minut. na swoje tzw. okno >>> marketingowe. >> >> A czy ja z tym dyskutuję? Ja wytykam głupi dobór braków. > > niemniej jednak sa to braki. o tym wlasnie mial byc ten watek.
Java też ma braki. Nawet podobne do perlowych, ale wymieniłem je w większej obfitości. Znaczy: mój pseudoargument jest sensowny?
>> W każdym języku >> znajdzie się coś, co jest fajne, a w Perlu nie ma. Czy to znaczy, że >> Perl jest do dziadzi? > > nie, to znaczy, ze Perl ma braki.
Każdy język ma braki.
>>> poza tym Perl _jest_ bardziej skomplikowany niz PHP. watki _sa_ lepiej >>> zrobione w Javie. polemizuj z tymi tezami, a nie ze swoimi wymyslami nt. >>> Linuxa i Windows. >> >> Przepraszam, ale dlaczego? I czy ja tu gdzieś zaprezentowałem jakieś >> wymysły? > > sorry, uzylem zlego slowa. wymyslami nazwalem zastosowana przez Ciebie > konstrukcje erystyczna polegajaca na zastapienie wypowiedzi dyskutanta > swoja wlasna, niby analogiczna, ale latwiejsza do obalenia.
Tak samo łatwą do obalenia. I całkiem dobrze analogiczną.
>> Zwróć, proszę, uwagę na to, że ja wcale nie twierdzę, że Perl >> ma dobrze zrobione wątki (bo raczej nie ma) czy że jest prosty (bo >> ewidentnie jest skomplikowany). Ale dlaczego, jakim prawem, > > prawem wolnosci wypowiedzi zapewne (-: > >> jest >> porównywany do abstrakcyjnego, nieistniejącego języka złożonego ze >> wszystkich dobrych cech zebranych po wszystkich innych językach? >> Dlaczego Perl nie jest porządnie porównany z każdym językiem z osobna, >> tylko ze wszystkimi na raz? > > bo takie porownanie nie zmiesciloby sie w jednym akapicie, a autorowi > chodzilo po prostu o wskazanie kilku wad Perla.
To w takim razie jest porównanie wysoce nieuczciwe.
>> Czy Java ma równie bogatą bibliotekę z klasami co CPAN? Czy narzuca >> czytelne formatowanie jak Haskell czy Python? Czy równie łatwo jest >> osadzić JSP w Apache'u co PHP? Czy pozwala na takie manipulacje >> systemem jak C? Czy gwarantuje niszczenie obiektów as-fast-as-possible, >> jak w C++? Czy ma wbudowane w _język_ (nie w bibliotekę) wsparcie dla >> wątków, tak jak ma Ada? Nie? No proszę, do dupy ten język. >> >> Widać niedorzeczność argumentów tego typu? > > skadze. masz prawo zestawiac wady (i rzekome wady) dowolnych jezykow w > dowolny sposob i wyciagac z nich dowolne wnioski. co w tym zlego?
Bo ktoś później może na tej podstawie zdecydować się na ten lub inny język. Może nawet przypadkiem trafi poprawnie, ale to będzie czysty przypadek.
-- <Kosma> Niektórzy lubią dozziego... <Kosma> Oczywiście szanujemy ich. Stanislaw Klekot
teodozjan - 08-03-2007 00:03
On 7 Mar, 22:49, "Stachu 'Dozzie' K." <doz...@dynamit.im.pwr.wroc.pl.nospam> wrote: > Bo ktoś później może na tej podstawie zdecydować się na ten lub inny > język. Może nawet przypadkiem trafi poprawnie, ale to będzie czysty > przypadek.
Hahaha :D
Przyznam uczciwie, że na perla trafiłem przypadkiem, okazało się, że pasował do mojego stylu i sprawdzał się do pisania krótkich, ale użytecznych programów, które działały pomimo mojej mglistej wiedzy o programowaniu.
Przeważnie programista ,,lubi'' język z którym najwięcej pracowałna początku nauki programowania.
RobTM - 09-03-2007 00:04
Stachu 'Dozzie' K. napisał(a): > On 07.03.2007, Twelve Hungry Mammoths <someone@microsoft.com> wrote:
>> coz, vim jest niedoscigalny z definicji i kazdy inny edytor jest w >> porownaniu z nim biedny. > > Zapominasz o Emacsie.
Heh, to zdanie wywołało uśmiech na mojej twarzy. ;)
RobTM:)
Stachu 'Dozzie' K. - 09-03-2007 00:04
On 08.03.2007, RobTM <RobTM@fake.addr.ess> wrote: > Stachu 'Dozzie' K. napisał(a): >> On 07.03.2007, Twelve Hungry Mammoths <someone@microsoft.com> wrote: > >>> coz, vim jest niedoscigalny z definicji i kazdy inny edytor jest w >>> porownaniu z nim biedny. >> >> Zapominasz o Emacsie. > > Heh, to zdanie wywołało uśmiech na mojej twarzy. ;)
Tak, wiem. Dziwna to rzecz w ustach (palcach?) zatwardziałego vimowca. Ale Emacsowi trzeba oddać sprawiedliwość, zwłaszcza w obliczu Visual Studio i Eclipse.
-- <Kosma> Niektórzy lubią dozziego... <Kosma> Oczywiście szanujemy ich. Stanislaw Klekot
moldovenu - 09-03-2007 00:04
>>> coz, vim jest niedoscigalny z definicji i kazdy inny edytor jest w >>> porownaniu z nim biedny. >> >> Zapominasz o Emacsie. > > Heh, to zdanie wywołało uśmiech na mojej twarzy. ;)
"imaks rzondzi" ;)
-- adam
Maciej Misiak - 09-03-2007 00:04
> Maciej Misiak napisaĹ�: > Witam, > > [ciach o dĹ�ugich liniach itp] > > > Jak na razie jedyna reguĹ�a, która mi spÄ�dza sen z powiek i której nie byĹ�em w > > stanie zawrzeÄ� w regexpie, jak zresztÄ� powyżej widaÄ�, to (jakiĹ� czas temu > > poruszaĹ�em to na grupie) zmienna int z zakresu x..y. JeĹ�li (x,y)=(0,7) to > > jeszcze Ĺ�atwo, ale (x,y)=(1,2000) już jest dyskusyjne, natomiast > > (x,y)=(0,10000000)? Jak na razie stosujÄ� obejĹ�cie \d+ i zajmujÄ� siÄ� innymi > > sprawami, ale kiedyĹ� bÄ�dzie trzeba to poprawiÄ�. ByÄ� może wtedy przyjdzie czas na > > zmianÄ� podejĹ�cia i wtedy bÄ�dzie wiÄ�cej kodu, a mniej regexpów. > > Na szybko, używajÄ�c niezalecanych konstrukcji i w ogóle nieĹ�adnie: > $perl -ne 'print "P: $1\n" if m{(\d+)[^\d] (?(?{ ($^N>1) && ($^N<2000) })|^$)}x' > 0 > 1 > 2 > P: 2 > 1000 > P: 1000 > 1999 > P: 1999 > 2000 > 10000
No właśnie, niezalecane konstrukcje :( Ale zaryzykujmy :) Zmieniłem na perl -ne 'print "P: $1\n" if m{\b(\d+)\b (?(?{ ($^N>1) && ($^N<2000) })|^$)}x' żeby 12345 się nie załapało, ale przy takich rzeczach zaraz się pojawia problem jak to wpiszesz do zmiennej. Tak jeszcze działa:
------------ #!perl -n sub re { return qr'\b(\d+)\b(?(?{$^N>1&&$^N<2000})|^$)' }
$re = re(1, 2000); /$re/ && print "P: $1\n" ------------
ale jak tam władować parametry? Nie działa: sub re{ return qr/\b(\d+)\b(?(?{$^N>$_[0]&&$^N<$_[1]})|^$)/ }
ani
sub re { $cc='\b(\d+)\b(?(?{$^N>' . $_[0] . '&&$^N<' . $_[1] . '})|^$)'; return qr/$cc/ }
a nic innego sensownego nie udało mi się wymyślić.
-- grizzley
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Maciej Misiak - 09-03-2007 00:04
> > Maciej Misiak napisaĹ�: > > Witam, > > > > [ciach o dĹ�ugich liniach itp] > > > > > Jak na razie jedyna reguĹ�a, która mi spÄ�dza sen z powiek i której nie > byĹ�em w > > > stanie zawrzeÄ� w regexpie, jak zresztÄ� powyżej widaÄ�, to (jakiĹ� czas temu > > > poruszaĹ�em to na grupie) zmienna int z zakresu x..y. JeĹ�li (x,y)=(0,7) to > > > jeszcze Ĺ�atwo, ale (x,y)=(1,2000) już jest dyskusyjne, natomiast > > > (x,y)=(0,10000000)? Jak na razie stosujÄ� obejĹ�cie \d+ i zajmujÄ� siÄ� innymi > > > sprawami, ale kiedyĹ� bÄ�dzie trzeba to poprawiÄ�. ByÄ� może wtedy > przyjdzie czas na > > > zmianÄ� podejĹ�cia i wtedy bÄ�dzie wiÄ�cej kodu, a mniej regexpów. > > > > Na szybko, używajÄ�c niezalecanych konstrukcji i w ogóle nieĹ�adnie: > > $perl -ne 'print "P: $1\n" if m{(\d+)[^\d] (?(?{ ($^N>1) && ($^N<2000) })|^$)}x' > > 0 > > 1 > > 2 > > P: 2 > > 1000 > > P: 1000 > > 1999 > > P: 1999 > > 2000 > > 10000 > > No właśnie, niezalecane konstrukcje :( Ale zaryzykujmy :) Zmieniłem na > perl -ne 'print "P: $1\n" if m{\b(\d+)\b (?(?{ ($^N>1) && ($^N<2000) })|^$)}x' > żeby 12345 się nie załapało, ale przy takich rzeczach zaraz się pojawia problem > jak to wpiszesz do zmiennej. Tak jeszcze działa: > > ------------ > #!perl -n > sub re > { > return qr'\b(\d+)\b(?(?{$^N>1&&$^N<2000})|^$)' > } > > $re = re(1, 2000); > /$re/ && print "P: $1\n" > ------------ > > ale jak tam władować parametry? Nie działa: > sub re{ return qr/\b(\d+)\b(?(?{$^N>$_[0]&&$^N<$_[1]})|^$)/ } > > ani > > sub re > { > $cc='\b(\d+)\b(?(?{$^N>' . $_[0] . '&&$^N<' . $_[1] . '})|^$)'; > return qr/$cc/ > } > > a nic innego sensownego nie udało mi się wymyślić.
Doczytałem w mądrych książkach, to nie problem w zmiennych, a w (?{}), brakowało use re 'eval'; Ciekawe jakie z tego wyjdą problemy? :)
-- grizzley
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Jaroslaw Zabiello - 09-03-2007 00:04
Dnia Tue, 06 Mar 2007 10:44:27 +0100, moldovenu napisał(a):
> Jest w pytonie domyślne deklarowanie zmiennych?
Nie i bardzo dobrze.
>>> if x == 1: print 1 .... Traceback (most recent call last): File "<interactive input>", line 1, in ? NameError: name 'x' is not defined
> Tzn. żeby uniknąć tego typu pomyłek: > > fbhughxx = 13 > fbhugnxx = fbhughxx + 4
A kto uzywa takich nazw i takiej konstrukcji? Jest przecież operator +=
-- Jarosław Zabiełło http://blog.zabiello.com
Jaroslaw Zabiello - 09-03-2007 00:04
Dnia Tue, 6 Mar 2007 16:29:39 +0000 (UTC), Adam Osuchowski napisał(a):
> IMHO w ogólnych zastosowaniach pałeczkę przejął Python, a w przypadku > zastosowań webowych PHP.
Co do weba to kończy się syf i spaghetti code i zaczyna dominacja MVC i frameworków. I tu PHP nie ma wiele do zaoferowania. Zaczyna coraz bardziej tracić swoją pozycję na rzecz np. Ruby on Rails. Python próbuje też atakować za pomocą Django, Pylonsów czy TurboGears ale i tak RoR jest na fali. Ma doskonałą dokumentację, zaczyna wychodzić coraz więcej książek nawet po polsku. No i kod, nie dość że krótki to i czytelny.
-- Jarosław Zabiełło http://blog.zabiello.com
Jaroslaw Zabiello - 09-03-2007 00:04
Dnia Wed, 07 Mar 2007 19:40:50 +0100, Twelve Hungry Mammoths napisał(a):
> porownaniu z nim biedny. ale slyszalem o wtyczce do eclipse emulujacej > klawiszologie vima. ale nie wiem jak dziala. pewnie biednie.
Zobacz nowy Komodo. Ma podobno dobry tryb vim'a. Koloruje mnóstwo języków. Jest całkiem niezły.
-- Jarosław Zabiełło http://blog.zabiello.com
Twelve Hungry Mammoths - 09-03-2007 00:04
On Wed, 07 Mar 2007 22:49:18 +0100, Stachu 'Dozzie' K. <dozzie@dynamit.im.pwr.wroc.pl.nospam> wrote: >> >>> Eclipse ma zbyt biedny >>> edytor >> >> coz, vim jest niedoscigalny z definicji i kazdy inny edytor jest w >> porownaniu z nim biedny. > > Zapominasz o Emacsie.
nie zapominam. tylko nie chcialem rozpetywac w tym watku dodatkowo swietej wojny vim vs emacs.
>>> a z pozostałych (z wyjątkiem Sun Studio) żadne nie poradzi sobie >>> z podświetlaniem składni czterech używanych przeze mnie języków. >> >> LOL. mam w pracy taki prosciutki edytorek Context, ktory ma >> podswietlanie >> kilkudziesieciu jezykow. EditPlus tez ma gdzies tyle. UltraEdit >> podobnie. >> SciTE tudziez. jakiez to czery jezyki, jezeli mozna wiedziec? > > A które *środowisko* sobie poradzi z tyloma językami? Bo ConTEXT i SciTE > to tylko edytory.
no edytory. chodzilo mi o to, ze skoro kazdy srednio wypasiony edytor (nie wspominajac juz o porzadnych IDE) radzi sobie z kilkudziesiecioma jezykami, to ciekawosc bierze, co to za jezyki, z ktorymi zadne IDE sobie nie radzi.
> Mówimy o używaniu IDE i używaniu środowiska sklejanego z wielu narzędzi. > I o tym, że ty sobie nie wyobrażasz używania cmdline'owych narzędzi, > podczas gdy dla mnie to wygodna codzienność. I że ja nie wyobrażam sobie > rezygnacji z potężnego edytora, co z kolei jest codziennością dla > ciebie.
nie, ja pisalem o konkretnym zastosowaniu konkretnego ficzera, dokladnie wbudowanego klienta systemu kontroli wersji w sytuacji, gdy chcemy np. przejrzec zmiany przychodzace w kilkudziesieciu plikach zrodlowych, a w dodatku w kilku mamy konflikty. w eclipse aby obejrzec zmiany zwizualizowane w calkiem fajny sposob, wystarczy dwuklik na pliku na liscie. konflikty rozwiazuje sie podobnie, klikajac na strzalke w lewo lub w prawo w zaleznosci od tego, co uznajemy za lepsze. czy z linii polecen jest to rownie proste?
>> eclipse to umie. do antfile'i ma nawet podpowiadanie skladni. > > A ma podświetlanie składni do makefile'a, SConsa albo autotools?
nie uzywalem, wiec nie wiem. trzeba by poszukac wtyczek. pewnie do makefile'a sa, do pozostalych nie wiem. jest tez taka wtyczka (colorer sie chyba nazywa), ktora latwo pozwala definiowac schematy podswietlania skladni dla dowolnego rodzaju plikow. mozliwe, ze sa do niej schematy takze do wymienionych przez Ciebie narzedzi.
>>>>> A może edytor, który nie potrafi nawet zwijać kodu w takich >>>>> granicach, jakich potrzebuję, >>>> >>>> tzn. w jakich? >>> >>> Kolejne cztery bloki if. Od połowy poprzedniej funkcji prawie do końca >>> funkcji bieżącej. >> >> LOL. to, ze vim umozliwia (przypadkiem) tego typu kombinacje alpejskie, >> nie oznacza, ze komus jest to niezbedne do pracy (-: > > Owszem, jest niezbędne. Zdarza mi się przy pisaniu jednej funkcji > spojrzeć do deklaracji zmiennych w drugiej funkcji.
podczas gdy Ty wklepujesz w vimie kombinacje przypominajaca przeklinanie w komiksach, reszta ludzkosci wykonuje dwa ruchy kolkiem mysze w gore i w dol (-:
>>>>> w zamian oferując zwijanie pojedynczych >>>>> bloków {}, do czego _niezbędna_ jest myszka? >>>> >>>> eclipse potrafi wiecej. >>> >>> To znaczy co konkretnie potrafi? >> >> jak juz pisalem, na codzien nie korzystam, ale potrafi zwijac sekcje >> importow, komentarze javadoc i kazdy element hierarchii kodu >> (klasa/metoda/blok). > > To w takim razie malutko.
widac wiekszosci ludzkosci to wystarcza (-:
>>>> znow Cie ponioslo. kolega nie napisal, ze Perl nie nadaje sie do >>>> uzytku, >>>> tylko ze moze sie spoznic na swoje 5 minut. na swoje tzw. okno >>>> marketingowe. >>> >>> A czy ja z tym dyskutuję? Ja wytykam głupi dobór braków. >> >> niemniej jednak sa to braki. o tym wlasnie mial byc ten watek. > > Java też ma braki. Nawet podobne do perlowych, ale wymieniłem je > w większej obfitości. Znaczy: mój pseudoargument jest sensowny?
ten ponizej (pod koniec)? jasne. sensowny w sensie falsyfikowalny. to jest taki, z ktorym mozna polemizowac. nawet bym popolemizowal, ale rozumiem, ze to byl tylko przyklad, a nie Twoje zdanie.
>>> W każdym języku >>> znajdzie się coś, co jest fajne, a w Perlu nie ma. Czy to znaczy, że >>> Perl jest do dziadzi? >> >> nie, to znaczy, ze Perl ma braki. > > Każdy język ma braki.
nikt nie twierdzil inaczej. ale to nie bylo raczej przedmiotem tamtego artykulu.
>> bo takie porownanie nie zmiesciloby sie w jednym akapicie, a autorowi >> chodzilo po prostu o wskazanie kilku wad Perla. > > To w takim razie jest porównanie wysoce nieuczciwe.
nie widze w tym nic nieuczciwego. napisal, co uwazal i juz. problem czytajacych, co z tym zrobia. nieuczciwe byloby, gdyby myslal jedno, a pisal cos innego (-:
>>> Czy Java ma równie bogatą bibliotekę z klasami co CPAN? Czy narzuca >>> czytelne formatowanie jak Haskell czy Python? Czy równie łatwo jest >>> osadzić JSP w Apache'u co PHP? Czy pozwala na takie manipulacje >>> systemem jak C? Czy gwarantuje niszczenie obiektów as-fast-as-possible, >>> jak w C++? Czy ma wbudowane w _język_ (nie w bibliotekę) wsparcie dla >>> wątków, tak jak ma Ada? Nie? No proszę, do dupy ten język. >>> >>> Widać niedorzeczność argumentów tego typu? >> >> skadze. masz prawo zestawiac wady (i rzekome wady) dowolnych jezykow w >> dowolny sposob i wyciagac z nich dowolne wnioski. co w tym zlego? > > Bo ktoś później może na tej podstawie zdecydować się na ten lub inny > język. Może nawet przypadkiem trafi poprawnie, ale to będzie czysty > przypadek.
j/w. jezeli ktos wierzy we wszystko, co wyczyta w internecie, to juz jego problem. czytajac artykul w rodzaju "perl (java) jest najgorszym jezykiem swiata" trzeba wziac pod uwage, jaka wiedze i doswiadczenie moze miec autor, jaki ma interes w tym, co pisze, jakich uzywa argumentow itp.
pzdr szeryf
=?ISO-8859-2?Q?Edward_Knia=BFycki?= - 09-03-2007 00:04
Jaroslaw Zabiello napisał(a): > Dnia Wed, 07 Mar 2007 19:40:50 +0100, Twelve Hungry Mammoths napisał(a): > >> porownaniu z nim biedny. ale slyszalem o wtyczce do eclipse emulujacej >> klawiszologie vima. ale nie wiem jak dziala. pewnie biednie. > > Zobacz nowy Komodo. Ma podobno dobry tryb vim'a. Koloruje mnóstwo języków. > Jest całkiem niezły. > Ma tryb vi, przynajmniej tak piszą w helpie: "Komodo emulates the following Vi modes: Normal: navigation and editing Input: entering text Visual: visual selection of text with navigation keystrokes Command-line: running vi/ex commands"
-- Pisząc do mnie usuń zbędne słowo z adresu
Jacek Fedorynski - 09-03-2007 00:04
Jaroslaw Zabiello wrote: >>Jest w pytonie domyślne deklarowanie zmiennych? > > Nie i bardzo dobrze.
Szkoda, ze niedomyślnego też nie ma.
>>>>if x == 1: print 1 > > ... > Traceback (most recent call last): > File "<interactive input>", line 1, in ? > NameError: name 'x' is not defined
zmienna_bez_literowki = 1
if random.random() > 0.01: print zmienna_bez_literowki else: print zmienna_z_literowka
>>fbhughxx = 13 >>fbhugnxx = fbhughxx + 4 > > A kto uzywa takich nazw i takiej konstrukcji? > Jest przecież operator +=
W życiu literówki nie zrobiłeś?
Naturalnie każdy robi testy coverage, ale błagam, nie udawajmy, że use strict to nie jest coś, co chcielibyśmy (móc) mieć, tylko dlatego, że w Pythonie go nie ma.
Pozdrawiam,
Jacek Fedoryński
"I z twarzą na wschód zrobiłem jeden krok. Skończyłem. Rozpoczynaj."
moldovenu - 10-03-2007 00:04
> fali. Ma doskonałą dokumentację, zaczyna wychodzić coraz więcej książek > nawet po polsku. No i kod, nie dość że krótki to i czytelny.
jest sporo książek, fakt. jest trochę dokumentacji, duży marketing hype. Ale RoR ma też sporo wad, których np. nie powiela już perlowy Catalyst i inne, "nie narzucające jedynego sposobu" frameworki.
Mnie najbardziej rozłożył domyślny brak quotowania nazw kolumn w ActiveRecord i brak dokumentacji/informacji nt. temat. Może za mało próbowałem szukać, czas to jednak pieniądz, a problem mnie po prostu rozbroił. Ale to tak troche OT.
-- adam
moldovenu - 10-03-2007 00:04
>> fbhughxx = 13 >> fbhugnxx = fbhughxx + 4 > > A kto uzywa takich nazw i takiej konstrukcji? > Jest przecież operator +=
Masz więc kawa na ławę: foon = 213 fooh = bla_bla(foon)
Na perla można narzekać, można go wyśmiewać i w dobrym tonie jest czasem żartowanie z niego ;) ale gdy przychodzi do konkretów:
- w pythonie/ruby unikniemy tego błędu tylko, jeśli testy wychwycą go - w perlu unikniemy tego błędu jw + na etapie kompilacji.
Świat nie jest idealny i funkcjonalność programów nie ma 100% pokrycia w testach, dobrze jest mieć więc w zanadrzu parę innych sposobów, by zabezpieczyć się przed "głupimi błędami".
-- adam
Jaroslaw Zabiello - 10-03-2007 00:04
Dnia Thu, 08 Mar 2007 22:42:50 +0100, Jacek Fedorynski napisał(a):
> Naturalnie każdy robi testy coverage, ale błagam, nie udawajmy, że use > strict to nie jest coś, co chcielibyśmy (móc) mieć, tylko dlatego, że w > Pythonie go nie ma.
Mylisz się. Python też posiada taką opcję.
import random zmienna_bez_literowki = 'OK'; if random.randint(1,10) > 5: print zmienna_bez_literowki else: print zmienna_z_literowk
Należy tylko wywołać z dodatkowa opcją, np. tak:
python -Qwarnall test.py
Traceback (most recent call last): File "test.py", line 6, in ? print zmienna_z_literowka NameError: name 'zmienna_z_literowka' is not defined
Poza tym Python posiada też świetną bibliotekę pylint która dokonuje analizy kodu i wyłapuje sporo więcej niż tylko takie literówki (http://pydev.sourceforge.net/pylint.html), np. nawet ostrzeże że nie pisze kod nie trzymając się zaleceń PEP8 (http://www.python.org/dev/peps/pep-0008/) pylint jest standardowo obecny w wielu edytorach IDE do Pythona. Dodatkowo jest jeszcze jedna biblioteka do refactoringu, przydaje się do wymiany większej ilości zmiennych/metod,klas. W sumie masz full wypas.
-- Jarosław Zabiełło http://blog.zabiello.com
Jaroslaw Zabiello - 10-03-2007 00:04
Dnia Fri, 09 Mar 2007 12:23:33 +0100, moldovenu napisał(a):
> Masz więc kawa na ławę: > foon = 213 > fooh = bla_bla(foon) > > Na perla można narzekać, można go wyśmiewać i w dobrym tonie jest czasem > żartowanie z niego ;) ale gdy przychodzi do konkretów: > > - w pythonie/ruby unikniemy tego błędu tylko, jeśli testy wychwycą go > - w perlu unikniemy tego błędu jw + na etapie kompilacji.
Echhh. Zarowno Python jak i Ruby tez to potrafi :)
python -Qwarnall test.py Traceback (most recent call last): File "test2.py", line 2, in ? fooh = bla_bla(foon) NameError: name 'bla_bla' is not defined
ruby -w test.rb test.rb:2: undefined method `bla_bla' for main:Object (NoMethodError)
-- Jarosław Zabiełło http://blog.zabiello.com
Jaroslaw Zabiello - 10-03-2007 00:04
Poprawka do podanego przeze mnie przykładu Rubiego. Podobnie jak Python, posiada kilka poziomow ostrzeżeń. Aby wyłapywać błedy z kodu:
zmienna_bez_literowki = 'OK' if rand(10) > 5 puts zmienna_bez_literowki else puts zmienna_z_literowka end
Trzeba uruchamiac skrypty na poziomie wyższym od 1, np. 2:
ruby -W2 test.rb test.rb:5: undefined local variable or method `zmienna_z_literowka' for main:Object (NameError)
-- Jarosław Zabiełło http://blog.zabiello.com
Jaroslaw Zabiello - 10-03-2007 00:04
Dnia Fri, 9 Mar 2007 14:21:37 +0000, Jaroslaw Zabiello napisał(a):
Ruby ma bardzo dobre mechnizmy bezpieczeństwa i system warningów. Daleko bardziej wyrafinowane niż Perl czy nawet Python:
http://blog.zabiello.com/articles/20...%84stwa-w-ruby
-- Jarosław Zabiełło http://blog.zabiello.com
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
Strona 2 z 4 • Znaleźliśmy 170 postów • 1, 2, 3, 4
|
=?ISO-8859-2?Q?Re=3A_Informatyka=2C_Java=2C_EJB=2C_Ajax=2C?== ?ISO-8859-2?Q?_Spring=2E_Czy=BFby_to_koniec_=B6wiata=2C_czy? ==?ISO-8859-2?Q?_te=BF_nasze_uczelnie_b=EAd=B1_uczy=B3y_w_k?== ?ISO-8859-2?Q?o=F1cu!_czego_praktyczne?=
=?iso-8859-2?q?Informatyka,_Java,_EJB,_Ajax,_Spring=2E_Czy=BF by_to_koniec_=B6wiata,_czy_te=BF_nasze_uczelnie_b= EAd=B1_uczy=B3y_w_ko=F1cu!_czego_praktycznego_=2E= 2E=2E=2E?=
=?ISO-8859-2?Q?b=B3=B1d_w_bazie=2C_nie_wiem_od_czego?==?ISO-8859-2?Q?_zaczac_szukanie?=
=?iso-8859-2?Q?=5Blama=5D_Mapa_-_od_czego_zacz=B1=E6=3F?=
do czego uzywac perl-a? czy warto poznac ten jezyk
[ORACLE] - Czego używcie do monitorowanie swoich baz?
replikacja w Mysql 5.0.27- czego brak ?
Od czego zacząć robienie strony ?
Aplikacja dla laboratorium - czego użyć
[mySQL] Sprawdzenie, czego jest najwiecej
zanotowane.pldoc.pisz.plpdf.pisz.pltejsza.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|