argon bulletin board

Експертно търсене  

Новини:

Регистрирането на нови потребители е временно деактивирано.

Автор Тема: Опасният GOTO или Как да не преподаваме  (Прочетена 6743 пъти)

Nikolay Manchev

  • Неактивен Неактивен
  • Публикации: 185
    • http://www.manchev.org

Наскоро ми разказаха интересна и скорошна случка от ФМИ . Тъй като не съм свидетел от първо лице, ще се опитам да я предам по спомен от разказа. Студентът X има за задача да напише някаква програма по дисциплина, която изучава. След като предава напълно работеща и добре направена програма, преподавателят Y започва публично да го навиква за използването на оператор за безусловен преход в кода. Защо не трябва да се използва този оператор и кое му е толкова лошото, преподавателят не успява да обясни. Вероятно защото и той самият не знае.

Тази случка толкова ме подразни, че реших да седна и да напиша малко информация по темата с идеята, че следващия път хората, които адвокатстват срещу GOTO, поне ще имат някой и друг смислен аргумент....

За да не правя тема от 5 страници, цялата история може да видите тук:

http://manchev.org/cms/index.php?option=com_content&task=view&id=50&Itemid=44

Всички коментари са добре дошли!

Поздрави,

Николай Манчев

Активен

Tosh

  • Неактивен Неактивен
  • Публикации: 249
  • Filmmaker
    • Изследванията на Тодор Арнаудов
Re: Опасният GOTO или Как да не преподаваме
« Отговор #1 -: 18.06.2007, 22:10:27 »

10 ? "GOTO RULES!"
20 GOTO 10


Може би благодарение на това, че съм започнал да програмирам на BASIC и машинен език, пропагандата срещу "Готото" не можа да ми промие мозъка. :-)

Ето един пресен пример от личния ми опит:

 for(i=0; i<transcription.Length; i++)
      {                            
            for(j=0; j<phonetic.Length; j+=2)
            {               
               if (phonetic[j] == transcription)
               {                  
                  sb.Append(phonetic[j+1]);
                  goto Next;
               }                                  
            }
            sb.Append(transcription);            
          Next:;
      }


Това ме подсеща - дано най-накрая някой се сети да направи по-мощни оператори break и continue, които да работят с вложени цикли. (Или ги има в някой език?)

continue - текущо ниво.
continue(1) - едно ниво по-нагоре.
break(1) - едно ниво по-нагоре.
и т.н.

(C) Вече са пантентовани! :-P
Активен
Творчество и изследвания:
http://twenkid.com
http://artificial-mind.blogspot.com

NeshtoSeSluchi

  • Неактивен Неактивен
  • Публикации: 209
Re: Опасният GOTO или Как да не преподаваме
« Отговор #2 -: 19.06.2007, 09:52:32 »

Аз не съм програмирал преди университета, така че интересно как не съм се хванал. Май защото така и никой не ми обясни какво му е лошото. После мернах някъде една забележка за разликите между C# и Java която беше "goto no longer considered harmful". Щом Anders Hejlsberg го счита за безопасен сигурно нищо му няма. Малко повече рисърч показа, че goto в C# дори не може да дебалансира стека (едно от обясненията защо goto не трябва да се ползва). Много съм благодарен за тази статия. Сигурно един ден щях да се изнервя на всичките глупости на анти-goto пропагандата и да направя този рисърч сам... сега не се налага.

В интерес на истината до сега не съм ползвал goto на работа, но не бих се колебал да го направя ако имах случай с подобна конструкция на тази с двата цикъла. По принцип хич не се замислям дали да пиша конструкции, които се считат за неприятни, като условен оператор например защото считам, че легендите за неяснотата им ги пускат хора които не знаят какво правят операторите. Също трябва да се отбележи, че goto не трябва да се ползва вместо други оператори за безусловен преход. Като видя goto вместо continue и на мен ми става лошо. Мисля, че преподавателите са се озорили да обяснят кога да се ползва goto и кога друга конструкция и са решили просто да го забранят, че и Дейкстра ги подкрепил...
Активен
Форум на свободата в ПУ: http://smfc.xaxa.eu

Jack Johnson

  • Неактивен Неактивен
  • Публикации: 704
  • Хора, пазете си здравето! То няма цена!
Re: Опасният GOTO или Как да не преподаваме
« Отговор #3 -: 19.06.2007, 10:30:35 »

От програмистка гледна точка операторът goto е напълно излишен. Лично аз от поне 5 години не съм писал код, който да използва този оператор.

Хрумна ми една интересна дилема: в асемблер синонимът на оператора goto е инструкцията JMP, интересно дали при положение, че съществува инструкцията CALL инструкцията JMP може да се премахне напълно?

Хайде Tosh, покажи какво знаеш! На теб разчитам да разнищиш мистерията!
Активен

Тодор Чаушев

  • Неактивен Неактивен
  • Публикации: 107
  • Ръководител УКЗ към ФМИ
Re: Опасният GOTO или Как да не преподаваме
« Отговор #4 -: 19.06.2007, 11:01:45 »

Вълненията по този въпрос още ли са на мода?
Преди 10г. мислех, че вече е приключил спора. Е от академична гледна точка може да продължи да се вихри 2-3 хилядолетия просто заради спорта. Проблема е като при всяка наука влязла в академичните глави - всичко трябва да е абсолютно точно дефинирано без неща от сорта: може така, а може и иначе. Някога имало спор светлината частица ли е или вълна, накрая се оказало че е и двете. Родил се корпускулярно - вълнов дуализъм. Само дето мътели главата на тогавашните студенти. Абсолютизирането на истините винаги е било проблем на човешката природа.
Малко са хомосапиенс на които им е ясно, че познанието ни е просто "географска" карта на истинските закони на вселената и тази карта ние я чертаем без да знаем колко е точна. А движението по карта е различно от движението по местноста. Ама това е друга тема отплеснах се.
Още един пример, който е в положение "ще видим":
Преди 12 - 13 години, ако не ме лъже паметта с проф. Д. Шишков (лека му пръст), проведохме един спор относно твърдението, че изкуствен интелект не е имало, няма и няма да има. Твърдението му се основаваше на една негова мисъл: "Компютрите принципиално не обработват информация, а данни! Защото не разбират смисъла на информацията.". Така че нямат шанс да мислят.
Да това твърдение е вярно, но то е валидно ДНЕС и УТРЕ, а след 50 или 500 години? То и човешкият мозък в същността си е компютър, ама не си го признаваме.
Та да се абсолютизира неизползването на GOTO, е просто плод на разбирания от миналото (не го слагам в кавички защото за информатиката 40 години са векове спрямо другите науки).
То и скалпела в ръцете на някой подрастващ ще доведе до наранявания, ама на хирурга си му върши идеална работа. А че някой преподаватели смятат, че "скалпела" е опасен и не трябва да се ползва, само осакътява знанията на студентите.
Но както е казано всяко нещо с времето си, след някоя година (1-2 века за информатиката) постепенно отричането на GOTO ще изчезне и всичко ще си дойде на мястото.

Времето ще покаже.


PS
докато напиша коментара, може и бой да стане :)
Не твърдя, че сорсовете ви трябва да са осеяни с GOTO ей!
« Последна редакция: 19.06.2007, 12:25:48 от Тодор Чаушев »
Активен

deviser

  • Неактивен Неактивен
  • Публикации: 247
    • портал за имоти
Re: Опасният GOTO или Как да не преподаваме
« Отговор #5 -: 19.06.2007, 11:26:38 »

На първо място аплодисменти за статията на г-н Манчев, много добре написана и подкрепена с необходимите факти  :bravo:
А сега по темата - за това дали е опасен или не операторът "go to" може да се спори с години без да се стигне до някакъв извод. Моето лично мнение е, че когато има възможност да се избегне "go to" е по добре да не се използва. Но също така да го зачеркнем изцяло е пълна глупост, има случаи в които ако се опитаме да го избегне ще трябва да напишем още 20-30 реда излишен код, който ще затормози допълнително програмата. Така че нека да си използваме "go to" само когато е наложително и целесъобразно. 
Активен

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die
Re: Опасният GOTO или Как да не преподаваме
« Отговор #6 -: 19.06.2007, 11:45:26 »

Значи и аз видях статията и съм чувал милиони аргументи за или против goto . Реално не ме интересува Деикстра или Х какво е казъл колко е добър или лош даден оператор.
Фактите при мен са следните
1)няма goto в Java
2) бих предпочел да не виждам N наброй да кажем в статията беше описано какво става ако имаме повече условия в въпросния цикъл ами да бих предпочел 7 ако трябва флага вместо 7 goto-та.
3) естествено че всяко нещо има приложение и е супер глупаво това че даскал X (кой е ?!? между другото ? ( приемам залози 5 лева е пода )) се е скарал на студент У особено без да обясни, но има и доста по абсурдни неща ( като например преподаватели който преподават и пишат оценки вместо да продават домати на пазара ), НО лично аз бих се дразнил да гледам код с goto .
4) може би не разбирам goto честно казано може би и не искам да го разбирам сигурно 1 goto е добре да има както се казва, но какво се случва при няколко goto-та ? това ми напомня на тринарния оператор:
a==b ? a == c ? a== d ? a=2 : a =b : a=7 :a =12 
това е разбираемо но когато са 7 ? :) когато флаговете са с по 8 символа
не мисля че 30 реда код с 4 goto-та са по добре от 4 флага с 50 реда код.


п.п. за защитниците на goto : я ми кажете  КОЛКО пъти сте ползвали не реално колко ПЪТИ ви се е налагало да ползвате goto в реален проект ?
Активен

Nikolay Manchev

  • Неактивен Неактивен
  • Публикации: 185
    • http://www.manchev.org
Re: Опасният GOTO или Как да не преподаваме
« Отговор #7 -: 19.06.2007, 12:51:40 »

@Иван Давидов: Това, че не си го писал не го прави излишен. Явно работиш в такава област, където не се налага. Искаш ли да опиташ да направиш един парсер, в който да не използваш оператори за безусловен преход? Всъщност ако направим едно по-генерално обобщение, имплементацията на краен автомат можем да я счетем за нерешима без такива конструкции (което си е напълно логично като се замислиш - в основата са преходи между състоянията).
@JOKe: В Java има GOTO, защото това е запазена ключова дума. Това че не е имплементирано е отделен въпрос :-D Всъщност, по-скоро го считат за излишен, защото има еквивалентни конструкции, които реализират същата функционалност (break и continue в комбинация с етикети). Нали?
@Тодор Чаушев: Да, крайните становища рядко са близо до истината. Аз съм чувал и по-крайни обобщения. Примерно, че ИИ било текстообработка  :bravo: А съм чувал също така, че с изкуствен интелект се занимавали тия дето нямат естествен :-D Всъщност, самият термин ИИ ми се струва крайно недоизпипан в този контекст. Много по-добре и по-тоно звучи въведения от Мински термин МИ (машинен интелект). Но всъщност, май се отплеснах не по темата, така че спирам. А че Шишков беше голям образ, няма спор.

Поздрави,

Николай
Активен

Ники Вълчанов

  • Неактивен Неактивен
  • Публикации: 526
  • History is written by the victors
Re: Опасният GOTO или Как да не преподаваме
« Отговор #8 -: 19.06.2007, 13:47:01 »

GOTO е изключително труден за следене оператор,
хората трябва да го забранят със закон и да пребиват до смърт с камъни
злосторниците, които го използват!!!

Нашите братя индийците го използват за щяло и нещало ...
заклевам ви се ... не ви се е налагало да fix-вате подобен код!
НЯМА ТАКИВА САДИСТИЧНИ КОПЕЛЕТА

за финал бих добавил

ЗА БОГА БРАТЯ !!! НЕ ИЗПОЛЗВАЙТЕ GOTO ... АКО НЕ МОЖЕТЕ ДА МИНЕТЕ БЕЗ НЕГО -
ПОТЪРСЕТЕ ПРОФЕСИОНАЛНА ПОМОЩ ...

НЕ ПОЛЗВАЙ GOTO - СПАСИ ЧОВЕШКИ ЖИВОТ
                               Ники Вълчанов
Активен
"Now everything is reflection
as I make my way though this labyrinth.
And my sence of direction
is lost like the sound of my steps!!!"
                                                     Elisa - Labyrinth

Jack Johnson

  • Неактивен Неактивен
  • Публикации: 704
  • Хора, пазете си здравето! То няма цена!
Re: Опасният GOTO или Как да не преподаваме
« Отговор #9 -: 19.06.2007, 13:50:41 »

@Иван Давидов: Това, че не си го писал не го прави излишен. Явно работиш в такава област, където не се налага. Искаш ли да опиташ да направиш един парсер, в който да не използваш оператори за безусловен преход? Всъщност ако направим едно по-генерално обобщение, имплементацията на краен автомат можем да я счетем за нерешима без такива конструкции (което си е напълно логично като се замислиш - в основата са преходи между състоянията).

Мда... може малко да поспорим по въпроса!

Нека ти задам един въпрос: колко често ти се налага (или ти се е налагало) да използваш оператора GOTO (или goto) в практиката си? Или break и continue в комбинация с етикети?

Моята практика дава следния отговор - през цялата ми професионална кариера (не че е чак толкова голяма) само веднъж (изключвам езикът BASIC) и то само за да си спестя 3 реда код (if и отваряща скоба, един ред тяло и накрая затваряща скоба). Имам наблюдения върху много професионални програмисти (както и ти) и не може да не се съгласиш, че в 99.9999% практиката не просто показва, ами направо емпирично доказва, че операторът goto е напълно излишен!

Искам да кажа, че каквото и колкото да си говорим практиката си казва своето, а именно, че съчетанието от букви goto в сорс кодовете на съвременния бизнес свят е много, ама много рядко срещано явление! Толкова рядко срещано, че срещането на гореспоменатата поредица от букви по-скоро би предизвикала (не)обоснован смут и вълнение, отколкото подкрепа!

Няма универсална истина по въпроса, но съм сигурен, че ако използвам goto в сорсовете, по които пиша, след това ще имам неприятности по време на фазата на ревюто. А и както вече казах от няколко години не съм използвал goto (поне не и съзнателно), тъй като перфектно си описвам логиката на програмата и без него! Следователно за мен употребата на този оператор е напълно излишна!

Що се отнася до парсерите - да, писал съм парсер(и) без да съм използвал каквито и да било GOTO конструкции, даже Design Pattern има точно по този въпрос и съм убеден, че този Design Pattern по никакъв начин не подтиква програмиста да използва goto. Все пак парсеритене не са ми силна страна, така че допускам, че за не-обектно-ориентираните езици мoже и да си прав (въпреки че не виждам кое би могло да е по-сложно от това да напишеш парсер за C имплементиран на VB или PASCAL без използването на ООП).

Отделно по асемблерския въпрос за JMP и CALL, който поставих по-горе си вкарах лек автогол, защото реалната имплементация на CALL е запис на следващия адрес с инструкция от паметта в стека, след което се извиква JMP => по-скоро CALL е излишна инструкция, отколкото JMP.

Лично мнение: студентите трябва само да знаят за съществуването на goto, но не и да се поощряват да използват този оператор по какъвто и да било начин. Допустимо е да се направи забележка, ако някой е предал програма, в която е използван този оператор, но не е допустимо да се стига до спорове, още повече, че те са по-скоро идеологични! Всеки може да защитава едната или другата страна, в такъв случай спорът го печели този, който пише оценките в протокола!
Активен

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die
Re: Опасният GOTO или Как да не преподаваме
« Отговор #10 -: 19.06.2007, 13:58:43 »

То общо взето не ставаше въпрос точно за ГОТО ами в часност за глупостите който се преподават и който се говорят от страна на преподавалите. Мале вчера разбрах че преподавател Z нямащ нищо общо с преподавател X надявам се станал доцент мале мале от утре продавам картофи на събота пазара. Правя 10% намаление на програмисти и 20% на програмисти които ме познават.
Активен

Nikolay Manchev

  • Неактивен Неактивен
  • Публикации: 185
    • http://www.manchev.org
Re: Опасният GOTO или Как да не преподаваме
« Отговор #11 -: 19.06.2007, 14:53:55 »

@Иван Давидов: Аз темата не съм я почнал, за да защитавам едната или другата страна. По-скоро за да извадя малко аргументи "за" и "против" и да видя коментарите. Определено не си падам по идеята да ми казват как се правят нещата на принципа "щото така се правят". Явно за всеки влак си има пътници.

Сега се сещам за следната история: Един мой приятел преподаваше Java в СУ. Дава на контролна задача, при която трябва да напишеш програма, която смята факториел. От цялата група един човек предава задачката за 10 мин и в 5 реда код - нерекурсивен вариант с един прост цикъл. Цялата останала част на групата предава рекурсивни решения (някои неработещи), като някои от капацитетите са си дефинарили и йерархия от класове, та задачката станала 3 страници. И като ги питал човека за чий им е тая рекурсия, като няма и 10 операции да изкарат програмките до препълване на типа, отговорът бил: "Ми на нас са ни казали, че факториел се решава с рекурсия!"

Та имам видение, да ти кажа. Същите тия студенти как стоят и казват, че GOTO не трябва да ползват, щото така са им казали. Това ми беше мисълта. А за пълно щастие предлагам в LR парсерите GOTO таблицата да я прекръстят на нещо друго, че да не е такъв трън в очите  :-D
Активен

NeshtoSeSluchi

  • Неактивен Неактивен
  • Публикации: 209
Re: Опасният GOTO или Как да не преподаваме
« Отговор #12 -: 19.06.2007, 15:09:18 »

В тоя ред на мисли не бива да забравяме да споменем другите капацитети, които дори пишат книги, твърдящи, че

String a = "a";
String c = "c";
String e = "e";

String result = a + "b" + c + "d" + e;

трябвало задължително да се замени със

String a = "a";
String c = "c";
String e = "e";

String result = new StringBuilder(a).append("b").append(c).append("d").append(e).toString();

или дори екстремистите според които

string result = "a" + "b" + "c" + "d" + "e";

трябва да се заменя със StringBuilder
Активен
Форум на свободата в ПУ: http://smfc.xaxa.eu

Дамян Митев

  • Неактивен Неактивен
  • Публикации: 14
  • Добре, че не съм се родил 8 битов!
Re: Опасният GOTO или Как да не преподаваме
« Отговор #13 -: 19.06.2007, 15:44:29 »

Дали goto е опасен оператор: краткият отговор е "да".

Със goto сме в разпра,
но ти не разбирай че мразя аз goto:
Напротив! Напротив!
Дори на Лисп да пиша,
любиния goto аз пак ще обичам,
аз пак ще обичам...

Но нека се обоснова по-непоетично.

В съвременното (бизнес) програмиране, се набляга най-много на четимоста и разбираемостта на кода. Обикновено проектите се пишат от колектив и е от критична важност един програмист светкавично да се ориентира в творчеството на колегите си. Това включва единна концепция за построяването на кода, единен начин на записване на заявки и не на последно място единен начин на форматиране на кода.

Това повишаване на четимостта на кода намалява неговата ефективност. И обратно, реализиране на алгоритъм за конкретна задача обикновено е много по-ефективен от използване на стандартни библиотечни функции, но значително намялява четимостта. Особено, когато липсват коментари ;)

Проблемът с goto e, че той е оператор от най-ниско ниво, т.е той се превежда директо в една единствена инструкция на процесора или виртуалната машина. Като такъв, неговото използване може много лесно да наруши логиката, изградена с операторите от по-високите нива (операторите на езика за програмиране и подпрограмите в кода или библиотеките).

Предимството на goto e, че той е оператор от най-ниско ниво. В ръцете на опитен пограмист (наблягам на опитен, с идеята че ще състави качествен код, за който няма да се появи нужда да бъде поправян от някой друг ! ), goto може да доведе до невероятни подобрения в скорост и памет (например понижаване на сложността на алгоритъм от O(n^2) до O(n.log(n)).

Най-важното е да се наблегне къде трябва и къде не е препоръчително да се използва goto.

В бизнес приложения, в които клиента може да си позволи машина с достатъчно изчислителна мощ и памет, и където скоростта на изпълнение на програмата не е критично важна, не е добра практика да се използва goto.

Но ако ще пишем драйвери и модули за ядро на ОС (например ;) ) където скоростта на изпълнение е важен фактор, goto е безценен помощник.

И все пак, в практиката най-много ми се е налагало да използвам goto, за да изляза от вложен цикъл направо извън тялото на външния. В Java има решение на този проблем: break и continue в комбинация с етикети.

@Tosh: в малко известният, но иначе много интересен език C-- (не се шегувам, http://c--sphinx.narod.ru/indexe.htm) реализирани оператори break n; и continue n; където n  е брой нива от вложени цикли, които да се прескочат.

И накрая:
goto е оператор от най-ниско ниво. А ние отдавна сме се отказали от операторите от ниско ниво с въвеждането езиците от високо ниво и компилаторите им с цел по-лесното писане и четене на кода от човеци.
Дали да го забраним - в никакъв случай! Има ситуации, в които goto e незаменим, или би довел до неимоверни подобрения в скорост или памет. Но тези ситуации въобще не са често срещани в ежедневието на средностатистическия програмист!
Затова нека се отнесем с него като спасителна буут дискета: нека си го имаме, нека знаем как и в кои случаи да го използваме, но да си седи в ъгълчето със старите дискети и да се молим никога да не ни се налага да го използваме!

За жалост доста от преподавателите ни, или не им са ясни, или не са се замисляли, или въобще не им се обяснява за принципите на програмирането, в частност goto, и им е много по-лесно да кажат "Забранявам goto със закон", отколкото да се аргументират защо така!

Ей, много емоционално го вкарах накрая, пълно с удивителни!!!

Активен
Форум на свободата в ПУ: http://xaxa.eu/index.php

Светослав Енков

  • Неактивен Неактивен
  • Публикации: 1864
    • Shark's Home Page
Re: Опасният GOTO или Как да не преподаваме
« Отговор #14 -: 19.06.2007, 16:29:51 »

Реално и на мен не ми се е налагало да ползвам Goto, след като приключих с BASIC (ех, славни времена, ех Правец-8).

Наистина само в драйвери би имало някакъв смисъл от Goto. Но фактически спора е безсмислен, защото от програмистите се иска работеща програма, а не идеален код, нали? Ако оператора Goto е добре коментиран и е на място употребен, мисля че би бил читаем и от другите в екипа!

Между другото, не знам дали Goto за излизане от вложени цикли не води до загуба на памет, нарушаване на оптимизациите на компилатора и кво ли не още - по-скоро това би било реална причина за анти-Goto, а не спора дали е добър стил или не?

Break/Continue с нива за излизане? Като идея звучи добре, но на практика се замислете, защо го има само в онзи С-- език? Защото е лошо като реализация с номер - ами ако вмъкнем после следващ цикъл? Или при голям и обемист код в тези цикли? Отново става нечитаем и опасен код! По принцип би се реализирало много лесно от транслаторите, така че липсата му е обоснована от нещо, нали? Правите си флагове, правите си проверки и това е! Ама сложно, ама бави... Дрън-дрън!
« Последна редакция: 19.06.2007, 16:39:25 от Светослав Енков »
Активен

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die
Re: Опасният GOTO или Как да не преподаваме
« Отговор #15 -: 19.06.2007, 16:38:55 »

Nikolay Manchev : между другото доста ми е интересно кой е преподавателя който ГЛЕДА какво пише в кода :)
това което съм забелязал като обща практика е АКО НЕЩО РАБОТИ - 6. ако не работи - 4 :)
поне в 1ви и 2ри курс не мисля че има преподавател който гледа кода в ФМИ на ПУ ако има такъв то крива работа човек да не се зарадва че някой гледа кода след като прави забележки за goto без да се обосновава.
Активен

Светослав Енков

  • Неактивен Неактивен
  • Публикации: 1864
    • Shark's Home Page
Re: Опасният GOTO или Как да не преподаваме
« Отговор #16 -: 19.06.2007, 16:40:26 »

Найдене, аз гледам кода, защото не пускам програмите на компютъра  :evil:

Но не съм аз този преподавател с Goto!
Активен

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die
Re: Опасният GOTO или Как да не преподаваме
« Отговор #17 -: 19.06.2007, 16:47:25 »

aa имам вътрешна информация че не гледате на всички кода :) :>
и че на някой пускате програмата :) ( не е от приятелката ми от други агенти е :) )

аз пък не им гледам кода щото ще бъда тотално мозъчно заразен с глупости :) а моите глупости ми стигат :)  хаха
Активен

Светослав Енков

  • Неактивен Неактивен
  • Публикации: 1864
    • Shark's Home Page
Re: Опасният GOTO или Как да не преподаваме
« Отговор #18 -: 19.06.2007, 17:13:38 »

Ако някой се оплаква и не е доволен от 6-цата си - всички проекти ги пазя в моя кабинет, може да ги преразгледаме с комисия и да понижим някои оценки, нямам против!!!

A, Найдене, за картофите на Събота Пазар - продавай пържени с биричка, иначе програмисти няма да имаш за клиенти!
« Последна редакция: 19.06.2007, 17:34:02 от Светослав Енков »
Активен

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die
Re: Опасният GOTO или Как да не преподаваме
« Отговор #19 -: 20.06.2007, 10:08:48 »

хм .. :)
мен идеята ми беше салатка от домати с ракиика :), но верно за лятото май е по добре картофи с бира :)

а иначе за оценките естествено че всички са доволни просто се пошегувах :)
Активен