Wybrane Posty

Co ciekawi mnie w muzyce? Zastanawialiście się kiedyś jakie czynniki powodują, że lubicie jakiś utwór? Dlaczego jest tak, że po pierwszym przesłuchaniu jakiejś piosenki jesteście w stanie zachwycić sie nią? W moim...

Czytaj dalej

Herbata - co i jak Herbata jest napojem, który towarzyszy nam na co dzień. Niewiele jest jednak osób, które przywiązują wagę do tego co i jak piją. Kupujemy ekspresówki, herbatki smakowe, czy też ziołowe. Kiedyś...

Czytaj dalej

Tortilla ziemniaczana z dodatkami Niedawno znalazłem przepis na tortillę ziemniaczaną i zainspirowało mnie to do poeksperymentowania. Jako, że samą tortillę robi się mniej więcej tak samo - ekperyment dotyczył tego, co na nią...

Czytaj dalej

Jestem jak Fin, czyli słowo o języku angielskim Języka angielskiego uczę się od wielu lat. W dzisiejszych czasach jego znajomość jest bezdyskusyjnie przydatna, a często wręcz wymagana. Większość młodych Polaków uczy lub uczyła się tego...

Czytaj dalej

Język (nie do końca) rozpoznawalny W poniedziałek, 15 września 2008 roku, zakończyłem oficjalnie pisanie pracy magisterskiej i złożyłem ją w dziekanacie. Jako, że nie wszyscy wiedzą o czym pisałem, postaram się przedstawić...

Czytaj dalej

Język (nie do końca) rozpoznawalny

Posted by EChO | Posted in Technologia | Posted on 18-09-2008

Tagi: , , ,

5

praca magisterskaW ponie­dzia­łek, 15 wrze­śnia 2008 roku, zakoń­czy­łem ofi­cjal­nie pisa­nie pracy magi­ster­skiej i zło­ży­łem ją w dzie­ka­na­cie. Jako, że nie wszy­scy wie­dzą o czym pisa­łem, posta­ram się przed­sta­wić krótko całą historię.

Gdy pół­tora roku temu zaczą­łem się zasta­na­wiać na poważ­nie nad tema­tem pracy, mia­łem kilka spre­cy­zo­wa­nych punk­tów, według któ­rych chcia­łem sobie dobrać temat. Moją spe­cjal­no­ścią jest inży­nie­ria opro­gra­mo­wa­nia, ale w tej dzie­dzi­nie dowolny temat pracy wyda­wał mi się mało inte­re­su­jący. Posta­no­wi­łem pracę pisać w innym insty­tu­cie, a mia­no­wi­cie w Insty­tu­cie Sztucz­nej Inte­li­gen­cji i Metod Mate­ma­tycz­nych. Mia­łem nawet kon­kret­nie wybra­nego pro­mo­tora, u któ­rego chcia­łem pisać. Pod­sze­dłem do wyboru tematu dość ambit­nie. Wybór cze­goś łatwego i odtwór­czego mnie zupeł­nie nie prze­ko­ny­wał. W końcu ma to być moja pierw­sza publi­ka­cja naukowa z praw­dzi­wego zda­rze­nia. Dla­czego więc nie połą­czyć kilku dzie­dzin, które mnie inte­re­sują? Z racji wybra­nej spe­cjal­no­ści, głów­nym zada­niem w pracy miało być stwo­rze­nie pro­gramu. Chcia­łem napi­sać pro­gram, dzięki któ­remu prze­pro­wa­dził­bym bada­nia, któ­rych wyniki mogą się real­nie przy­dać, a jed­no­cze­śnie sam pro­gram mógł być roz­wo­jowy. Wyko­rzy­sty­wałby sieci neu­ro­nowe do kla­sy­fi­ka­cji cze­goś zwią­za­nego z dźwię­kiem. Na początku myśla­łem o roz­po­zna­wa­niu stylu muzycz­nego bada­nego utworu. Jed­nak kla­sy­fi­ka­cja gatun­ków muzycz­nych jest na tyle trudna dla czło­wieka, że kom­pu­ter tym bar­dziej nie będzie w sta­nie sobie z tym pora­dzić. Popro­si­łem więc pro­mo­tora o pomoc w wymy­śle­niu tematu w sam raz dla mnie. I pro­mo­tor wymyślił:

„Zasto­so­wa­nie sztucz­nych sieci neu­ro­no­wych do roz­po­zna­wa­nia języka mówią­cej osoby”

Temat spodo­bał mi się od samego początku. Wow! Zajmę się roz­po­zna­wa­niem języ­ków :-) . Oprócz dzie­dzin zwią­za­nych z dźwię­kiem, sztuczną inte­li­gen­cją i pro­gra­mo­wa­niem, mogę się zająć też bar­dzo inte­re­su­jącą mnie dzie­dziną — języ­ko­znaw­stwem. Cho­ciaż w ogra­ni­czo­nym stop­niu. Do tematu nie mia­łem żadnych zastrze­żeń, więc taki wła­śnie został ofi­cjal­nie przyjęty.

Jako rasowy pro­kra­sty­na­tor, na poważ­nie zają­łem się pracą dopiero w ostat­nim seme­strze ;-) . Wcze­śniej bar­dzo powoli gro­ma­dzi­łem lite­ra­turę, na któ­rej mógł­bym się oprzeć. Jed­nak lite­ra­tury takiej nie ma. Musia­łem się oprzeć na kilku anglo­ję­zycz­nych arty­ku­łach nauko­wych, trak­tu­ją­cych kon­kret­nie o tema­cie roz­po­zna­wa­nia języka. Reszta lite­ra­tury to publi­ka­cje o ana­li­zie i syn­te­zie dźwięku czy ogólne o samych sie­ciach neu­ro­no­wych. W dodatku publi­ka­cji o iden­ty­fi­ka­cji języka, w języku pol­skim, nie zna­la­złem żadnych. Dobrze, że oprócz pro­mo­tora zna­ją­cego się na sie­ciach neu­ro­no­wych, mia­łem też do kogo się zwró­cić w tema­cie samej ana­lizy dźwięku. Pani Ania dużo mi pomo­gła — dzięki niej opra­co­wa­łem naj­waż­niej­szą część pracy, czyli metodę eks­trak­cji cech głosu, któ­rymi potem mia­łem uczyć sieć neuronową.

Sama metoda powstała i została prze­te­sto­wana w Matla­bie jesz­cze przed waka­cjami. Zdą­ży­łem jesz­cze tylko napi­sać roz­działy teo­re­tyczne i prze­su­nąć ter­min odda­nia pracy na wrze­sień. Waka­cje upły­nęły mi na pisa­niu całego pro­gramu w C++ (jakieś 20% czasu) i jego testo­wa­niu (80% czasu, bo prze­cież nic nie może dobrze dzia­łać za pierw­szym razem ;-) ). Gdy po bólach pro­gram już powstał, prze­pro­wa­dzi­łem za jego pomocą bada­nia. Wresz­cie mogłem spraw­dzić jak się spra­wuje moje dziecko :-) .

Bada­nia były prze­pro­wa­dzone na prób­kach zdań w 6 języ­kach: pol­skim, angiel­skim, nie­miec­kim, wło­skim, hisz­pań­skim i rosyj­skim. Przy­go­to­wa­łem po 21 zdań w każ­dym z tych języ­ków i zaprzę­głem syn­te­za­tory mowy, żeby wyge­ne­ro­wały mi zda­nia z poprawną wymową. Dodat­kowo, przy­go­to­wa­łem próbki mowy żywego czło­wieka dla języka pol­skiego, angiel­skiego i rosyj­skiego. Zapo­wia­dało się cie­ka­wie… ale wyniki badań mnie nieco roz­cza­ro­wały. Przy ucze­niu wszyst­kich 6 języ­ków na raz, jakość roz­po­zna­wa­nia była bar­dzo niska. Od 20 do 50%. Z czego naj­go­rzej sieć roz­po­zna­wała… język angiel­ski. Naj­le­piej za to wło­ski. Wło­ski prak­tycz­nie wygry­wał w każ­dej kon­fi­gu­ra­cji. Naj­le­piej był roz­po­zna­walny (i to w pra­wie 85%) przy zesta­wie 3 języ­ków — pol­skim, wło­skim i hisz­pań­skim. Nie zdzi­wiło mnie to. Jeśli zna­cie melo­dię języka wło­skiego (a mój pro­gram wła­śnie ana­li­zuje melo­dię wypo­wia­da­nych zdań), to wie­cie, że każde zda­nie koń­czy się sko­kiem into­na­cji od dźwięku wyż­szego do niż­szego. Co wię­cej –bada­nia na prób­kach żywej ludz­kiej mowy wypa­dły nieco gorzej niż na prób­kach syntetycznych.

Czy więc ponio­słem klę­skę? W żadnym wypadku! Wycią­gną­łem wnio­ski, które pozwolą mi na udo­sko­na­le­nie algo­rytmu i prze­pro­wa­dze­nie kolej­nych badań. Na pewno nie porzucę tego co zaczą­łem. A świa­do­mość tego, że moja publi­ka­cja jest chyba jedyną taką w języku pol­skim, moty­wuje mnie dodat­kowo. W końcu inter­fejsy gło­sowe za kilka lat staną się bar­dzo popu­larne, a ja two­rzę pewien ważny wyci­nek tego, co w tych inter­fej­sach będzie imple­men­to­wane. Napi­sa­łem przy­zwo­itą pracę, z któ­rej jestem zado­wo­lony i która rokuje na przy­szłość. Jesz­cze czeka mnie obrona na początku paź­dzier­nika i wtedy będę mógł ode­tchnąć :-) . I z pew­no­ścią po obro­nie opi­szę bar­dziej szcze­gó­łowo wyniki badań, a także opu­bli­kuję swoją pracę w internecie.

Mam nadzieję, że Was nie zanu­dzi­łem, i że kogoś innego oprócz mnie też to zain­te­re­so­wało. W razie czego — pytaj­cie w komen­ta­rzach. Chęt­nie odpo­wiem :-)

Ulubione: Blogi o WWW

Posted by EChO | Posted in Technologia | Posted on 28-07-2007

Tagi: , , ,

0

Tym postem otwie­ram pewną serię, w któ­rej będę przed­sta­wiał moje ulu­bione ser­wisy — warte pole­ce­nia i czę­stego odwie­dza­nia. Dzi­siaj pokrótce przy­bliżę Wam strony, które trak­tują o wsze­la­kich aspek­tach ser­wi­sów WWW — od webma­ste­ringu i usa­bi­lity, przez newsy o nowych łebdwa­ze­ro­wych pro­jek­tach, aż po pry­watne blogi z pora­dami i ciekawostkami.

Pol­skie

Anty­Web [http://antyweb.pl/]
Blog Grze­go­rza Mar­czaka, trak­tu­jący głów­nie o por­ta­lach spo­łecz­no­ścio­wych — pol­skich i zagra­nicz­nych, a także o cie­ka­wost­kach na rynku nowych tech­no­lo­gii. Posty są zgrab­nie pisane, cza­sem z wła­snymi prze­my­śle­niami. Jest to cie­kawe źródło infor­ma­cji przede wszyst­kim o pol­skich zaso­bach web 2.0. Blog jest czę­sto aktu­ali­zo­wany, co jest spo­rym plusem.

Blog Pio­tra Koniecz­nego [http://blog.konieczny.be/]
Cie­kawe notki, pisane mniej regu­lar­nie, lecz zawsze na wyso­kim pozio­mie. Od hac­kingu i bez­pie­czeń­stwa, przez prze­glą­darki (głów­nie Opera), ser­wisy inter­ne­towe, aż po rów­nie cie­kawe oso­bi­ste spostrzeżenia.

Porad­nik webma­stera [http://poradnikwebmastera.blox.pl/html]
Blog Pawła Wim­mera — chyba nie spo­sób się nie zetknąć z tym nazwi­skiem :-) . Nazwa bloga może nie do końca odzwier­cie­dla tema­tykę, cho­ciaż także sporo jest tu postów o sze­roko poję­tym webma­ste­ringu, ser­wi­sach inter­ne­to­wych i nowych tech­no­lo­giach, pisa­nych w miarę regu­lar­nie. Autor pisze także cza­sem notki bar­dziej oso­bi­ste i poli­tyczne — przy obec­nej sytu­acji wcale się temu nie dzi­wię ;-)

Per­fec­tion or Vanity? [http://perfectionorvanity.com/]
Piotr Petrus (Rid­dle) też jest z pew­no­ścią znany inter­nau­tom inte­re­su­ją­cym się webma­ste­rin­giem. Tym razem posty są bar­dziej tech­niczne, opi­su­jące roz­wią­za­nia czę­sto poja­wia­ją­cych się pro­ble­mów przy two­rze­niu stron. Dosko­nałe (lub cza­sem mniej dosko­nałe) roz­wią­za­nia w Java­Scrip­cie, (x)htmlu i innych tech­no­lo­giach. Szkoda tylko, że tak rzadko ostat­nio pisze.

The­Tar­Pit [http://dezinformacja.org/tarpit/]
Tym razem spe­cja­li­sta od Seman­tic Web i inży­nie­rii opro­gra­mo­wa­nia. Autor — Michał Świąt­kie­wicz — podob­nie jak Rid­dle przed­sta­wia różne tech­niczne roz­wią­za­nia webma­ster­skie, cho­ciaż głów­nie w tema­cie SW. Rzadko pisane, lecz zawsze ciekawe.

Web 2.0 [http://web20.pl/]
Jak sama nazwa wska­zuje — blog o web 2.0, pro­wa­dzony przez Seba­stiana Kwiet­nia. Głów­nie o pol­skim web 2.0 i tren­dach w inter­ne­cie. Także nie­re­gu­larny, lecz czę­sto jest cie­ka­wym uzu­peł­nie­niem innych blo­gów w tej tematyce.

Webusability.pl [http://www.webusability.pl/]
Pro­fe­sjo­nalny (jak dla mnie) blog o uży­tecz­no­ści. Pro­wa­dzi go Tomek Kar­watka, z któ­rym kie­dyś przez pewien czas współ­pra­co­wa­łem przy maga­zy­nie NoName.

WebAu­dit [http://webaudit.pl/blog/]
Robert Drózd także pisze o uży­tecz­no­ści ser­wi­sów inter­ne­to­wych. Cie­kawe, pro­fe­sjo­nalne podej­ście do usa­bi­lity, mar­ke­tingu inter­ne­to­wego i nowych tech­no­lo­gii. Fajne uzu­peł­nie­nie dla webusability.pl.

Zagra­niczne

Masha­ble [http://mashable.com/] oraz Tech­Crunch [http://www.techcrunch.com/]
Dwa podobne do sie­bie ser­wisy z dużą ilo­ścią new­sów doty­czą­cych nowych ser­wi­sów inter­ne­to­wych. Masha­ble jed­nak głów­nie sku­pia się na wszel­kiego rodzaju spo­łecz­no­ściach, a Tech­Crunch także ogól­nie na nowych tech­no­lo­giach. Czę­sto jed­nak mają w tym samym cza­sie te same newsy. Pod­stawa dla mania­ków NT.

Life­hac­ker [http://lifehacker.com/]
Tro­chę innego typu ser­wis, gdyż nie sku­pia się tylko na inter­ne­cie. Prze­czy­tać w nim można wsze­la­kie porady dla użyt­kow­ni­ków kom­pu­te­rów. Opi­suje ser­wisy spo­łecz­no­ściowe i nie­spo­łecz­no­ściowe, nowe pro­gramy kom­pu­te­rowe, porady odno­śnie sys­te­mów ope­ra­cyj­nych, ale także życiowe (np. jak zro­bić łapkę na muchy ;-) ). Kilka(naście) postów dziennie.

To są naj­cie­kaw­sze ser­wisy, które prze­glą­dam regu­lar­nie (czyt. zapy­chają mi regu­lar­nie czyt­nik RSSów ;-) ). Zna­cie jakieś inne godne pole­ce­nia blogi? A może macie wła­sne prze­my­śle­nia co do tych opi­sy­wa­nych przeze mnie? Pisz­cie śmiało w komen­ta­rzach. Zapraszam!

Moje pomysły na udoskonalenie narzędzi CASE

Posted by EChO | Posted in Technologia | Posted on 16-07-2007

Tagi: ,

0

Więk­szość pro­gra­mi­stów pra­cuje wyko­rzy­su­jąc te narzę­dzia, inni ich nie uży­wają z róż­nych przy­czyn, ale wie­dzą o co cho­dzi. Tym, któ­rzy nie wie­dzą podaję krótką i strawną defi­ni­cję, żeby wie­dzieli o czym jest ten arty­kuł i ewen­tu­al­nie prze­stali go czy­tać :-)

Narzę­dzia CASE (czyli Com­pu­ter Aided Software Engi­ne­ering lub Com­pu­ter Aided Sys­tem Engi­ne­ering) to sys­temy kom­pu­te­rowe, prze­zna­czone do wspo­ma­ga­nia ruty­no­wych czyn­no­ści pro­cesu two­rze­nia opro­gra­mo­wa­nia. Dzięki nim pro­jekty two­rzy się dokład­niej, a praca nad dia­gra­mami, spraw­dza­nie ich popraw­no­ści oraz śledze­nie wyko­na­nych testów jest prost­sze i szybsze.

Pro­log
Wiele CASE’ów, szcze­gól­nie tych dar­mo­wych, ma słabą funk­cjo­nal­ność. Inne – zazwy­czaj te komer­cyjne – zbyt dużą jak na prze­cięt­nego pro­gra­mi­stę. Nie­które sys­temy ogra­ni­czają się do two­rze­nia dia­gra­mów UML, mode­lo­wa­nia baz danych, czy też pro­stego gene­ro­wa­nia sza­blonu kodu i sche­ma­tycz­nych doku­men­ta­cji. Reverse engi­ne­ering jest rzad­ko­ścią, cho­ciaż np. Sta­rUML sobie z tym radzi. W innych „sys­te­mach” widzimy prze­rost formy nad tre­ścią, cho­ciażby taki Visio, który z zało­że­nia miał być dla nas czymś w rodzaju CASE (cho­ciaż de facto nim nie jest). Czy można stwo­rzyć ide­alne roz­wią­za­nie dla wszyst­kich? Teo­re­tycz­nie nie, ale czemu nie spróbować?

Praw­dziwa modu­ło­wość
Sporą popu­lar­no­ścią wśród mło­dych infor­ma­ty­ków cie­szą się pro­gramy, które można dosto­so­wy­wać do swo­ich potrzeb. Dla infor­ma­tycz­nych laików jest to spory minus, gdyż czę­sto liczba opcji takiego pro­gramu prze­kra­cza moż­li­wo­ści opa­no­wa­nia przez takiego śmier­tel­nika. Jed­nak dla zapa­leńca, który chce dopie­ścić pro­gram do gra­nic, jest to roz­wią­za­nie ide­alne. Bar­dzo dobrym przy­kła­dem takiego podej­ścia jest komu­ni­ka­tor inter­ne­towy Miranda. Samo jądro Mirandy w głów­nej mie­rze służy do obsługi plug-inów oraz zapew­nia pod­sta­wowe metody do obsługi komu­ni­ka­tora, z któ­rych korzy­stają deve­lo­pe­rzy piszący wtyczki. Dzięki temu użyt­kow­nik ma do wyboru kil­ka­set wty­czek, które wzbo­ga­cają komu­ni­ka­tor o kon­kretne funk­cje. Z takiego roz­wią­za­nia korzy­sta się coraz czę­ściej, lecz zazwy­czaj w ogra­ni­czo­nym stop­niu. Wtyczki do zwy­kłych pro­gra­mów popra­wiają jego funk­cjo­nal­ność w nie­wiel­kim stop­niu. W tym przy­padku każda funk­cja jest oddziel­nym plug-inem. Oddziel­nie mamy okienko roz­mowy, oddziel­nie listę kon­tak­tów, oddziel­nie histo­rię. Każda z tych wty­czek ma zazwy­czaj sporo opcji do samo­dziel­nego usta­wie­nia i dosto­so­wa­nia. Na podob­nej zasa­dzie działa odtwa­rzacz muzyczny Foobar. I cho­ciaż wtyczki do niego są nieco bar­dziej ogra­ni­czone, to moż­li­wość wła­snej kon­fi­gu­ra­cji jest ogromna.

Dla­czego by nie zasto­so­wać podob­nego roz­wią­za­nia w przy­padku sys­te­mów CASE? Prze­cież nie każdy pro­gra­mi­sta musi korzy­stać ze wszel­kich modu­łów stan­dar­do­wego CASE’a. Poza tym pod­czas two­rze­nia pew­nego pro­jektu, różne osoby mają różne zada­nia do wyko­na­nia. Po co im więc ten sam zestaw funk­cji w CASE’ie? Można taki sys­tem roz­bić na duże, nie­za­leżne moduły, które obsłu­gują jedną poważną funk­cjo­nal­ność, a do każ­dego z tych modu­łów mogli­by­śmy doda­wać pomniej­sze udo­god­nie­nia. Przy­kła­dowo – jeden z naj­waż­niej­szych (w tym wypadku) modu­łów to Moduł Importu/Eksportu. Jest szcze­gól­nie ważny, gdyż dzięki niemu moż­liwa jest wymiana danych mię­dzy róż­nymi pro­gra­mami, a nawet mię­dzy oso­bami pra­cu­ją­cymi na naszym ide­al­nym CASE’ie, tylko róż­nie skon­fi­gu­ro­wa­nym. Do tego modułu możemy doda­wać obsługę kolej­nych for­ma­tów prze­sy­ła­nia danych, a także różną obsługę wymiany danych (np. za pomocą usta­lo­nego pro­to­kołu sie­cio­wego). Inny przy­kład – two­rze­nie dia­gra­mów w róż­nych stan­dar­dach. Jeśli osoba A potrze­buje do pracy tylko pew­nego nie­wiel­kiego zestawu dia­gra­mów – po co mu cała reszta? Skoro jest od wielu lat ten­den­cja do jak naj­węż­szej spe­cja­li­za­cji, to wiel­kie kom­bajny „do wszyst­kiego” są zbędne. W dodatku zaj­mują nie­ba­ga­telną ilość zaso­bów systemu.

Cechy i funk­cje ide­alne
Dla mnie, jako stu­denta infor­ma­tyki, ważną cechą doty­czącą jakie­go­kol­wiek pro­gramu jest jego dar­mo­wość i otwar­tość. Otwar­tość jest szcze­gól­nie ważna przy zało­że­niu, że każdy bar­dziej zaawan­so­wany pro­gra­mi­sta mógłby do takiego CASE’a napi­sać swój wła­sny moduł czy plug-in.

Z otwar­to­ścią wiąże się także wie­lo­plat­for­mo­wość takiego pro­gramu. Chciał­bym mieć moż­li­wość pracy na nim zarówno pod Win­dow­sem, jak i Linuk­sem (a może nawet MacOS’em?).

Intu­icyj­ność obsługi jest rów­nież ważna. Popra­wia z pew­no­ścią ergo­no­mię, a zatem także szyb­kość pracy. Wszel­kie menu, kla­wi­szo­lo­gia i inne paski narzę­dziowe powinny być w 100% kon­fi­gu­ro­walne przez użytkownika.

Wie­lo­stan­dar­do­wość. Jest to ważne, gdyż różni ludzie mają różne przy­zwy­cza­je­nia i wła­sne ozna­cze­nia w dia­gra­mach. Każdy użyt­kow­nik naszego CASE’a powi­nien mieć moż­li­wość dosto­so­wa­nia stan­dar­dów do sie­bie, a jed­no­cze­śnie powi­nien mieć moż­li­wość kon­wer­sji tych dia­gra­mów do postaci wygod­nej dla współ­pra­cow­ni­ków. Taka kon­wer­sja powinna prze­bie­gać auto­ma­tycz­nie pod­czas wymiany danych z innymi pra­cow­ni­kami przy danym projekcie.

Dla nowych użyt­kow­ni­ków CASE’a przy­dałby się roz­bu­do­wany i „inte­li­gentny” help. Z jed­nej strony coś na kształt pod­ręcz­nika użyt­kow­nika (jeśli ktoś lubi tego typu publi­ka­cje), a z dru­giej strony – pod­po­wie­dzi w cza­sie rze­czy­wi­stym. Oczy­wi­ście w pełni kon­fi­gu­ro­walne i zaim­ple­men­to­wane jako osobny plug-in do danego modułu. Zaawan­so­wany użyt­kow­nik może go więc wyłą­czyć i nie obcią­żać nie­po­trzeb­nie zaso­bów systemu.

Gene­ra­tor kodu i środo­wi­sko pro­gra­mi­styczne. Wiele środo­wisk pro­gra­mi­stycz­nych (np. Eclipse) ma moż­li­wość roz­bu­dowy o ele­menty obsługi UMLa czy też innych skład­ni­ków stan­dar­do­wego CASE’a. Można więc zro­bić odwrot­nie. Jed­nym z modu­łów naszego CASE’a byłoby wła­śnie środo­wi­sko pro­gra­mi­styczne (IDE) dla kon­kret­nego języka pro­gra­mo­wa­nia. Wtedy gene­ra­tor kodu byłby dopa­so­wany ide­al­nie do tego środo­wi­ska, a co za tym idzie – unik­nę­li­by­śmy dziw­nej nad­mia­ro­wo­ści kodu i pro­ble­mów zwią­za­nych z bra­kiem kon­kret­nych nagłów­ków czy innych wyma­ga­nych dekla­ra­cji w programie.

Epi­log
Są różni pro­gra­mi­ści, z róż­nymi pomy­słami i przy­zwy­cza­je­niami. Obecne narzę­dzia CASE w pew­nym stop­niu narzu­cają nam wła­sny spo­sób obsługi. Bar­dzo czę­sto wpływa to nega­tyw­nie na nasta­wie­nie pra­cow­nika, a co za tym idzie – na jakość i szyb­kość jego pracy. Two­rząc CASE’a zgod­nego z powyż­szymi pomy­słami, mamy moż­li­wość przy­naj­mniej czę­ścio­wego wyeli­mi­no­wa­nia tego problemu.