Моите впечатления от Software University/ Основи на прогамирането/ Интензивен курс
Здравейте на всички!!!
Софтуерният университет е добро място да над градите уменията си и да навлезете в една нова среда.
Двете зали са добре оборудвани и са достатъчно широки за провеждане на лекции и семинари.
Ако нямате компютър в залите има и може да се запише да ги ползвате. Хората са много любезни и винаги ще Ви окажат съдействие.
Аз лично не можах да се справя добре на изпита днес и съм разочарован от мен и, че не съм се подготвил по-добре. Даже си помислих с толкова налични материали няма начин да не се справиш и да не изкараш добра оценка.
Кликах на резултатите и видях много хора, които имат 0 точки. Около 10 човека от 2-та проведени изпита имат по 400-500 точки и друго всичко е доста слабо представяне.
На което води моят въпрос:
Не мислите ли, че трябва да се промени нещо в начина на преподаване и материала да може да се възприеме по-добре?
Много пъти, когато сме имали лекция, а след това домашното въобще не отговаря на лекцията, която сме имали в същият ден.
Повечето знания, които човек трябва да натрупа е сам да си търси от интернет и каквото си научи това.
Надявам се да обърнете внимание за бъдещите студенти в университета за възприемане на материала по-адекватно.
Поздрави,
//Просто един потребител
Наков на първата лекция: Judge-a подържа и други езици, но използването им на изпита по C# BASICS е на ваш риск.
Тоест няма смисъл да продължаваме тези, които по принцип не ползваме C#? Проблемът обаче важи и за този език ;)
Е как да няма смисъл, просто казвам, че е нормално системата за този изпит да е оптимизирана на C# и посочвам, че ви е казано, че не е препоръчително да се използва друг език на този изпит.
Доколкото знам програмата ви се различава коренно от тази на предишните два курса и ще се изучава предимно C# в първо ниво, ти би трябвало да си се интересувал каква точно ви е програмата след като си кандидатствал.
А относно това, че judge-a си има проблеми, да така е, но с малко тренировки му се свиква и става лесен за употреба, най-неприятното е, че за една кавичка на изходните данни може вместо 100 да изкараш 0 :(
Колега, те точно за това се наричат нулеви тестове - за да тестваш изпълняваш ли основните случаи и да разбереш по-добре какво се иска от теб. Ако параметрите на всички тестове в Judge-а бяха известни, то най-лесното решение ще е просто да си направиш едни условни конструкции - при този вход изкарай това на изхода, и готово. Не е това идеята :)
Има време ще ме разбереш за какво ти говоря ;)
Входа при PHP се чете от стандартния инпут. Ако си писал 100% web development с РНР едва ли си се сблъсквал с особеностите на PHP в CLI вариант - като например, че трябва да trim()-неш всеки fgets() иначе получаваш разни спейсинги и \n-ове, които не ти вършат работа, та даже пречат.
Другия проблем е, че Judge върви под Windows, а РНР под Windows не се държи особено добре, например - integer-а е 32 битов под windows.
Извинявайте, но PHP по принцип не е създаден за web dev, а е препроцесор на текст (хипер) и още по-точно GENERAL-PURPOSE SCRIPTING LANGUAGE. Пише си го в сайта му! Ако искате, можете да се хванете за сламката: " ... that is especially suited for web development and can be embedded into HTML."
Колкото до trim-ването - как става така, че имам два много стари проекта (балистичен калкулатор и самообучаваща се система, писани някъде края на 2002-ра), които работят само в режим офлайн (демек скриптовете се пускат ръчно) и все още работят коректно, без да се налага предварителна обработка на входа?
бтв при мен int е 9223372036854775807 под Windows, PHP не ми прави проблеми (посочете какви), та как става това? Магия?
Тоест не виждаш проблем в това, че участниците не са запознати напълно с правилата на системата?
PHP стартира като надграждане на "C" с цел да се пише Web. Такава е идеята на създателя му Rasmus Lerdorf, но това е друга тема. В конкретния случай не виждам какъв е проблемът - твоите submission-и тримват инпута :)
Задаваш абстрактен въпрос. Ако в твоята система, инпута който идва няма значение дали е "Hello" или "Hello\r\n" - съвсем нормално да не ти пречи това, че не тримваш. Обаче ако върху стринга "Hello\r\n" перформнеш str_replace и замениш последния символ с "T" очаквайки да стане HellT, ами - няма да стане :)
Така работи четенето на стандартния инпут в РНР от време оно - line ending-ите са в инпута за съответната линия и трябва да ги trim()-неш. Така препоръчват дори в документацията.
Изписах два абзаца де факто за проблем, който ти нямаш :) Споменах трим-ването, тъй като имаше и други хора, които са писали на РНР и при тях това, че не са трим-нали им е изиграло кофти номер.
Що се отнася до integer-a - http://php.net/manual/en/language.types.integer.php - тук си пише разликата в платформите. Както и да е, дори и на 64 битова платформа последния тест на втора задача няма как да мине без да се използва Arbitrary precision / BCMath. Което от своя страна може да доведе до бавни операции, тъй като BC функциите работят със стрингове и не са особено бързи.
За съжаление не намирам никъде публикувано, че първоначалната идея на PHP е да е надграждане на C. Всъщност е бил и основно е все още CGI tool, на който пък основната му функция е обработка на текст.
Колкото до въпроса дали е абстрактен или не - не, не задавам такъв въпрос. Питането ми беше защо за кандидатите и вече учащите нямаме спецификациите на обработката на входа, която прилага judge системата?
PHP_INT_MAX/SIZE могат да бъдат променени и PHP да бъде прекомпилиран (отделно има и пач за 7, който с малко баене може да се мушне в 5.6.x). Сега, отделен въпрос е, че е желателно машината на системата да бъде дублирана с втора машина с друга ОС. Но както и да е ...
Надграждане не беше може би правилният термин, който трябваше да използвам. Идеята е, че е C-like език, с много от функциите директно с имената им в C с идея да се пишат уеб приложения.
http://php.net/manual/en/history.php.php
Визирам:
" Originally used for tracking visits to his online resume, he named the suite of scripts "Personal Home Page Tools," more frequently referenced as "PHP Tools." "
и
"The language was deliberately designed to resemble C in structure, making it an easy adoption for developers familiar with C, Perl, and similar languages"
Та, по същество - за вече учащите има спецификация как се ползва PHP в курса по PHP. Истината е, че там е различно от това на входния изпит, тъй като задачите са направени да работят еднакво на всички езици, всичко минава през стандартния вход (stdin), което за съжаление си прав - никъде не е описано, заради факта, че на входящия курс се преподава C#. То и за това се казва PHP (CLI) това, на което се пише на входния изпит - то използва CommandLine Interface-a, един бърз гугъл сърч за PHP CLI показва как би се държало PHP в такава среда. Най-долу пък в Judge пише, че системата е run-ната под Windows. Това пък, на което се пише на РНР курса е PHP (CGI) където получаваш входа като от форма - през GET-а и това се обяснява на всеки един випуск, който минава през курса по РНР.