--
You received this message because you are subscribed to the Google Groups "Polyglot Quine" group.
To unsubscribe from this group and stop receiving emails from it, send an email to polyglot-quin...@googlegroups.com.
To post to this group, send email to polyglo...@googlegroups.com.
Visit this group at http://groups.google.com/group/polyglot-quine.
For more options, visit https://groups.google.com/groups/opt_out.
Според мен би било по-добре да се започне от пред назад, а не обратното. Т.е. с функционални езици и после на императивни, като пораснат.
--
Напълно съгласен съм. Банчев беше постнал тук навремето една статия на Александреску - където беше даден като пример хаскелифицираният вариант на quicksort, който пропуска основната иновация на Хоор. В частност, на Haskell много трудно може да се дефинира in-place partition-а на quicksort-а, което е всъщност фундаменталното за самия алгоритъм. И по-общо, дефект на функционалните езици е липсата на достатъчно внимание върху random access iterator-ите, като или просто ги няма, или се третират като второразредни граждани. А random-access операциите върху масиви са ключови за някои алгоритми.
On Dec 17, 2013 12:19 AM, "Stefan Kanev" <stefan...@gmail.com> wrote:
>
> Аз започвам да имам все по-дълбоки съмнения за това откъде трябва да се започне. Правят ми впечатление две неща.
Мога да добавя -- всички добри програмисти които познавам знаят C, и (доста вероятно) са започнали с него.
Моето обяснение е, че всеки добър програмист трябва да знае целия stack, и ходенето нагоре по стека е винаги по-лесно, от колкото ходенето надолу. Липсва елемента на магията, който присъства при изучаването на езици от високо ниво: "тия неща са сложни, ние сме ги опаковали в тоя интерфейс, не го мисли -- работи". Ако не си писал на C нямаш желанието и контекста да разбереш как работят нещата всъщност.
Аз лично в момента много бих се замислил преди да напиша нещо на C (бих го написал на нещо друго). Мога да си представя какво желание имат останалите да го учат, при положение че функция от 10 реда на python, на C би отнела 500 (с имплементацията на хеш-таблица, динамични масиви и os примитиви за вход/изход). Поне мога да си представя как би изглеждало, ако не знаех C - не.
От друга страна ако си любопитен рано или късно стигаш до C, даже да не си започнал от там. Също не смятам, че от всеки може да стане добър програмист -- така че нека се учат масите на php и javascript, пък специалните кадри ще се проявят в последствие.
С други думи, много трудно е да се осъзнае C, ако преди това главата
ти е "заразена" с разни други "силно експресивни" езици -- няма
контекст с който всичко това да се обясни. Може би въпроса за първи
език е същия като въпроса кога да се изучава теория на множествата.
Според Тинко Тинчев, трябва да е втори или трети курс. След като си
взел малко Анализ и Алгебра и имаш идея от формално доказателство и
математика, и преди мозъка ти да се е затлачил с подробности от високо
ниво. Аз нямам наблюдения върху това, но той преподава от десетки
години, и постоянно експериментира с програмата, така че бих казал че
има добра идея.
Дори когато пиша на Haskell, ако искам кода да върви бързо трябва даимам представа как той ще се изпълнява. За осъзнаването на това трябва
да знам как работи виртуалната машина на Haskell, какво прави
компилатора и как работи самия хардуер.
Напълно съгласен съм. Банчев беше постнал тук навремето една статия на Александреску - където беше даден като пример хаскелифицираният вариант на quicksort, който пропуска основната иновация на Хоор. В частност, на Haskell много трудно може да се дефинира in-place partition-а на quicksort-а, което е всъщност фундаменталното за самия алгоритъм. И по-общо, дефект на функционалните езици е липсата на достатъчно внимание върху random access iterator-ите, като или просто ги няма, или се третират като второразредни граждани. А random-access операциите върху масиви са ключови за някои алгоритми.
2013/12/17 Veselin Georgiev <anr...@gmail.com>
Напълно съгласен съм. Банчев беше постнал тук навремето една статия на Александреску - където беше даден като пример хаскелифицираният вариант на quicksort, който пропуска основната иновация на Хоор. В частност, на Haskell много трудно може да се дефинира in-place partition-а на quicksort-а, което е всъщност фундаменталното за самия алгоритъм. И по-общо, дефект на функционалните езици е липсата на достатъчно внимание върху random access iterator-ите, като или просто ги няма, или се третират като второразредни граждани. А random-access операциите върху масиви са ключови за някои алгоритми.
Версията QuickSort със списъци на Haskell е отвратителна. Аз си мислех наскоро, че може да се напише директно както е на C, в do-notation под IO monada. Обаче, е по-интересно, ако абстрахираш IO и мислиш само за операциите които се прилагат върху вектора. Може да го напишеш в Writer-State монада и само да пазиш какви размени са се случили. В резултат получаваш директно пермутацията, която трябва да приложиш върху вектора. Естествено, това са празни приказаки без код; трябва да си поиграя.
На 17 декември 2013 г., 12:37, Slavomir Kaslev
<slavomi...@gmail.com> написа:
> Ако искаш бързина, защо не пишеш C еквивалент в IO monad Haskell? ТогаваАми не мисля, че IO монадата ще направи кода автоматично по-бърз.
> знаеш как ще се изпълни кода, и не е нужно да знаеш как стека под теб
> работи.
Примерно IORef въобще не е като променливa на C. Това е указател към
клетка която може да се променя. Освен това всички клетки са навързани
в списък който събирача на боклук трябва да обходи за да си свърши
работата. Като цяло прекаляването с IORef и подобните му прави кода
грозен без да го прави по-ефективен. Много по-добре е да пишеш чист
функционален код, но в случаите когато кода е критичен трябва да си
внимателен с реализацията.
Иначе да, ползвам и C. В момента имаме компилатор написан на Haskell и
runtime написан на C. Предишната версия на runtime-а беше също на
Haskell.
--
You received this message because you are subscribed to the Google Groups "Polyglot Quine" group.
To unsubscribe from this group and stop receiving emails from it, send an email to polyglot-quin...@googlegroups.com.
To post to this group, send email to polyglo...@googlegroups.com.
Visit this group at http://groups.google.com/group/polyglot-quine.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups "Polyglot Quine" group.
To unsubscribe from this group and stop receiving emails from it, send an email to polyglot-quin...@googlegroups.com.
To post to this group, send email to polyglo...@googlegroups.com.
Visit this group at http://groups.google.com/group/polyglot-quine.
For more options, visit https://groups.google.com/groups/opt_out.
> Какво ако най-добрия език е визуален, геометричен, вместо (както смеНе съм сигурен какво се има предвид в случая, но във всеки случай да
> свикнали за езици) символен, алгебричен?
отбележа, че класическата геометрия, ако се разбира като разсъждение
по чертеж, е ужасно слаба откъм вярност, точност и строгост и е силно
подвеждащ език. Затова съм скептичен за приложимостта ѝ в област като
програмирането, където тези свойства са от първостепенна важност.
Учебниците и др. текстове по елементарна геометрия са пълни с грешки.
Например теоремата на Чева е и формулирана, и „доказвана“ с груби
грешки почти навсякъде: като се почне от Уикипедия, мине се през
енциклопедията mathworld.com и се продължи с работите на безспорни
светила като Coxeter, Pedoe и Шарыгин.
--
You received this message because you are subscribed to the Google Groups "Polyglot Quine" group.
To unsubscribe from this group and stop receiving emails from it, send an email to polyglot-quin...@googlegroups.com.
To post to this group, send email to polyglo...@googlegroups.com.
Visit this group at http://groups.google.com/group/polyglot-quine.
For more options, visit https://groups.google.com/groups/opt_out.
Аз имам нещо много конкретно пред вид. Геометрията е синтетична, не класическа.
--
You received this message because you are subscribed to the Google Groups "Polyglot Quine" group.
To unsubscribe from this group and stop receiving emails from it, send an email to polyglot-quin...@googlegroups.com.
To post to this group, send email to polyglo...@googlegroups.com.
Visit this group at http://groups.google.com/group/polyglot-quine.
For more options, visit https://groups.google.com/groups/opt_out.
Обама си приказва пожелателни приказки, но дали наистина тенденцията
в училищата е такава? Тук пише друго:
http://www.exploringcs.org/resources/cs-statistics .
Упадъкът на образованието и в частност това по информатика е
отдавнашен и всъщност ние сме от последните засегнати. Сега, глупаво
приравнявайки програмите си с тези на „Европата“, наваксваме в темпа
и равнището на изоставане. Арнолд пише, че в Щатите поддържането на
ниско образователно равнище е целенасочена политика – нещо, което са
му казали самите американци. Нужни са потребители, а мислещите хора
трябва да са малко, елит. Същият процес явно върви не само там.
Макар все още да нямам преки наблюдения от училищата съм чувал подобни
неща и за Швеция. Дори в университета съм останал с впечатлението, че
много от младите капацитети идват от Азия или поне от източна европа.
Например в моя екип сме осем души от които само двама шведи. Това ме
кара да се чудя какво е най-добре за едно дете. Да пратя дъщеря си
обратно в България ми се струва като наказание, а и скоро българското
образование също ще бъде тотално прецакано.