[facepalm, СЗМ, геофак] "баловство"

Serab

Попросили тут помочь с праком немного. Любуйтесь:
препод прака на геофаке:
"правильно выводить площать треугольника в задаче "посчитать площадь треугольника" надо через ToString: добавить туда, в тустринг инфу о площади".
"ввод с клавиатуры осуществляется в конструкторе по умолчанию".
"У класса треугольник есть свойство answer, которое говорит мол "точка лежит внутри треугольника" или "точка не лежит внутри треугольника"
При этом в задачке принадлежность точки треугольнику считается (набрали воздуха в легкие :) )
1. методом "а просуммируем-ка мы три площади и сравним сумму с площадью треугольника"
2. площадь считается через что-то неведомое мне доселе (там есть синусы, квадратные корни и прочая)
Но это еще не все.
3. Равенство, конечно же, проверяется точное и поэтому почти никакие точки треугольникам не принадлежат согласно проге.
Вот, а нормальную работающую прогу с одним классом "точка" и чуть более многословной функцией Main отвергают со словами "это баловство".

apl13

Ы-ы-ы-ы-ы-ы-ы-ы-ы-ы-ы-ы!
Геофа-а-а-а-а-а-а-а-а-ак!

zorin29

Ну у одного моего знакомого в вузе вообще на лекциях по информатики USB-порт называли COM-портом ("Этот порт называется си-оу-эм" а программирование делится на 4 типа:
- программирование снизу вверх
- программирование сверху вниз
- объектно-ориентированное программирование и
- программирование в открытых исходных кодах.

okunek

Руководство геофака успешно решило вопрос перепрофилирования своих студентов в программеры.

apl13

Лобзиком.

yolki

это ведь геолухи, да?
который курс?

Serab

:)

nats

1. методом "а просуммируем-ка мы три площади и сравним сумму с площадью треугольника"
Чем не метод? Работает в общем-то.
2. площадь считается через что-то неведомое мне доселе (там есть синусы, квадратные корни и прочая)
Это ложь, стандартно через полупериметры всегда считали.
3. Равенство, конечно же, проверяется точное и поэтому почти никакие точки треугольникам не принадлежат согласно проге.
Это ложь, но бывало, что из жалости принимал задачу и при точном равенстве (точнее неравенстве до какого-то знака :) без вариантов точка на стороне треугольника.
Вот, а нормальную работающую прогу с одним классом "точка" и чуть более многословной функцией Main отвергают со словами "это баловство".
Есть такое, так как для него, в рамках твоего обучения, чем больше классов, тем лучше. Показатель, так сказать, того, что ты начинаешь мыслить ООП и понимаешь такое понятие как class. Т.е. если ты создашь класс "Треугольник" в котором будут поля класса "Точка", то приведёшь его в восторг и услышишь одобрительное: "Тита-а-а-н!" :)

Inflict84

> Это ложь, стандартно через полупериметры всегда считали.
А зачем? Если известны декартовы координаты точек, то формулой Герона пользоваться медленно и противоестественно.
> Показатель, так сказать, того, что ты начинаешь мыслить ООП и понимаешь
> такое понятие как class. Т.е. если ты создашь класс "Треугольник" в котором
> будут поля класса "Точка", то приведёшь его в восторг и услышишь одобрительное: "Тита-а-а-н!"
Может, меня здесь заклюют, но имхо пока нет полиморфизма, никаким ООП тут не пахнет.
> Чем не метод? Работает в общем-то.
Метод, конечно, но он приучает к подходу "сделать, чтобы абы как — но работало". С учетом того, что более удачный метод барицентрических координат очень прост и дидактичен. Плюс для этого способа очень изящно решается вопрос точности в определении, попала ли точка на сторону. Правда, возникает отдельная проблема с вырожденным треугольником.

nats

А зачем? Если известны декартовы координаты точек, то формулой Герона пользоваться медленно и противоестественно.

В общем ему не важно как ты будешь считать. Главное чтобы была применена конструкция класс. Эти задачи на освоение этой конструкции, как и то что квадратное уравнение надо было решить используя КЛАСС, хотя и ежу понятно что можно обойти и без него в маине в несколько строчек.
Может, меня здесь заклюют, но имхо пока нет полиморфизма, никаким ООП тут не пахнет.
Без класса в общем-то тоже. :) Препод нестандартный и очень своеобразный. Всю жизнь писал на С++, пока не познакомился с С# и теперь он его ярый фанат и пропагандист. Эти задачи направлены, по его мнению, на то, чтобы студенты умели создавать и использовать классы. В принципе, можно ему прийти и принести вообще свою задачу, где ты всё это реализуешь. Подходишь и говоришь: "Ваши задачи мне не очень, я принёс свою". Дальше садишься рядом и он начинает гонять тебя по коду и на понимание. Если всё успешно, то вообще можно избавиться от практикума. :)

apl13

Т.е. если ты создашь класс "Треугольник" в котором будут поля класса "Точка", то приведёшь его в восторг и услышишь одобрительное: "Тита-а-а-н!" :)
Надо так:
class treugolnik: public virtual to4ka, public virtual to4ka, public virtual to4ka {};

:umnik:

nats

Попросили тут помочь с праком немного. Любуйтесь:

Надо так:
class treugolnik: public virtual to4ka, public virtual to4ka, public virtual to4ka {};

Судя по первому посту, этот вариант не канает, так как чел, для которого делается (помогается прак просто не объяснит что к чему и сразу уйдёт на второй круг. А объяснить попросит, и первым вопросом будет: "Что означает virtual?" :) Так что лучше не выделяться, если не шаришь, будь как все и тогда пролезешь. А вообще прецедентов вроде не было, чтобы из-за него кто-то уходил.

zorin29

Думаю, первым вопросом будет: "почему не компилируется?" :) предпочитает писать на том языке, на котором ему проще продемонстрировать концепцию, а не на том, который нужен топикстартеру.

soroka000

class treugolnik: public virtual to4ka, public virtual to4ka, public virtual to4ka {};
Ну так допустим конечно нельзя.
Но вот так ...
template<int>
class point {};

class triangle: public virtual point<1>, public virtual point<2>, public virtual point<3> {};

Serab

Чем не метод? Работает в общем-то.
Тем, что заведомо численно менее устойчив, чем просто взять скалярные и косые произведения и посмотреть знаки.
Да и вообще, тем методом через площади и формулу герона мы решали в шестом классе на городское олимпиаде школьников. Студент геофака после года линала может уже и что-нибудь более нормальное придумать.
Это ложь, стандартно через полупериметры всегда считали.
Что значит «это ложь»?
Я видел программу, которую приняли, там используются синусы и квадратные корни. Я реально представить себе не могу, где там можно засунуть синус. Нет, меня посещяет одна мысль, но мне кажется, что этот угол еще найти надо будет и мне становится страшно :ooo:
кто всегда считал через полупериметры? Я всегда считал через косое/векторное произведение.
Это ложь, но бывало, что из жалости принимал задачу и при точном равенстве (точнее неравенстве до какого-то знака :) без вариантов точка на стороне треугольника.
что значит ложь? Вот именно, что надо с точностью до eps делать. А там написано double.Equals (тоже блин какое-то новое веяние, наверное в угоду любви препода к КЛАССАМ). И оно не работает даже если точка хорошо так внутри треугольника лежит, причем тут стороны вообще?

Serab

В общем ему не важно как ты будешь считать. Главное чтобы была применена конструкция класс. Эти задачи на освоение этой конструкции, как и то что квадратное уравнение надо было решить используя КЛАСС, хотя и ежу понятно что можно обойти и без него в маине в несколько строчек.
Ну вот в этом и есть смысл моего рассказа, которое озаглавлено «баловство». Если тебе не ясно, то могу разжевать: вся эта дрочь с «классами» — это и есть баловство. Он дорвался до концепции, сам не понимает, как ее применять, где она уместна, а где — нет, но требует от студентов ее пихать куда ни попадя, чтобы якобы «научиться». Вот оно баловство.

Serab

Может, меня здесь заклюют, но имхо пока нет полиморфизма, никаким ООП тут не пахнет.
кто заклюет? Правильно, нет бы придумал нормальную задачу, где нужен полиморфизм, так нет, он заставляет впихивать все, о чем он слышал (да и не слышал походу, просто любит удивляться новым конструкциям в коде) в неподходящие задачи.

yroslavasako

Вот оно баловство.
Это не баловство, это саботаж против собственных студентов

Serab

вряд ли он это делает осознанно. Просто нет утвержденной программы, а сам он некомпетентен: берет задачи из задачника «начинаем изучать паскаль». А надо бы из «начинаем изучать ООП». Вот и все, а внушение провести там походу некому, студенты просто ходят в темном лесу, не понимая, что происходит.

iravik

А че такого то? Это же геофак, зачем им уметь программировать?

yroslavasako

А че такого то? Это же геофак, зачем им уметь программировать?
лучше вообще не учить ООП, чем учить его так

Serab

Ну есть мнение, что не помешало бы. Да и делить на классы — тоже, в принципе, неплохая идея.
Но, за деревьями надо не забывать видеть лес (добило-то то, что принимают неработающую программу, но зато с классами, что симптоматично).

iravik

лучше вообще не учить ООП, чем учить его так
дык там все всё забудут после окончания курса, можно сказать, что ООП никто и не учит

Serab

ага, зато запомнят, что это какая-то непонятная херь.
Нельзя так не уважать студентов. Они все-таки могут понять вещи, если им их объяснить. Но тут никаких объяснений не проводится, просто с чуваков спрашивают, пока они не понадобавляют достаточно мути, чтобы у препода сложилось впечатление, что баланс баловства и небаловства в программе достиг необходимого ему значения (а не получена хотя бы работающая прога, заметьте).

serega1604

> Вот оно баловство.
давай так, ты знаешь хорошую задачу на понимание ООП для студентов, у которых программирование - не профильный предмет?

Serab

Надо открыть каких-нибудь Дейтелов, там дофига упражнений, не то, что для студентов, а для школьников. Там есть и большие и малые упражнения. Но это другой вопрос, если искать, всегда можно найти, тут же явно сделано на отмашь, да еще и с претензией. Это вредительство какое-то.

soroka000

Ы-ы-ы-ы-ы-ы-ы-ы-ы-ы-ы-ы!
Геофа-а-а-а-а-а-а-а-а-ак!
Вы, кстати, зря смеетесь над геофаком.
Вот взять студентов ВМК. 1-й курс паскаль и асм. 2-й курс си и с++.
В итоге в первом семестре 3-го курса ко мне приходят студенты, которые пишут программы на смеси си и паскаля например вот так:
if (бла бла бла) then m++; 

Объявляют циклы вот так (цитирую посимвольно):
for (i=0, i++, i <= n) 

И делают вот такие шедевры:
void swap(int a, int b) {int c = a; a = b; b = c;}

Так что на геофике еще не все так плохо, как может показаться.
ЗЫ Правда это 2-й поток...

Serab

Ясно же, что эти люди ни одной программы сами не написали, если ни иф ни фор сами написать не могут :)
Таких как бэ не проймешь :)

margadon

Тем, что заведомо численно менее устойчив, чем просто взять скалярные и косые произведения и посмотреть знаки
если есть координаты, для вычисления площади не обязательно использовать герона, можно теми же косыми произведениями - ими сравнить сумму площадей [точка * ребро] с площадью треугольника. Геометрично, обобщается на многоугольники неплохо :)

Serab

ну дааа, но все равно при сложении наращивается ошибка в координатах. А если проверять каждую сторону независимо, то нет. На многоугольники выпуклые обобщается? На выпуклые и обычный метод элементарно обобщается.

Serab

Не, ну я не спорю, в умелых руках тут все заработает. Просто это странности, идущие по возрастанию удивительности, трейтий пункт просто получает драматичность именно в виду первых двух, а именно дурацкого метода подсчета площади, а подсчет площади берется из-за того, что вообще такой подход выбрали. Так что тут все в целом плохо, а не конкретно первый пункт.

salamander

Таких как бэ не проймешь :)
Отчисление всех проймет.

stm5872449

Так что на геофике еще не все так плохо, как может показаться.
Это всего лишь значит, что на вмк все еще хуже, чем может показаться :)

Serab

это ничего не значит, потому что я когда в школе еще изучал языки, я тоже по началу путал немного. На ВМК все печально, но проблемы все-таки стоят более высокого уровня: там плохо учат прогать вообще, но подобного трэшака нет, ибо есть программа.

margadon

да что, мне кажется, и на невыпуклые (но не самопересекающиеся :) ) обобщается, разве нет? выбираем обход по границе, считаем ориентированные площади, складываем...
но да, погрешности складываются
УПД:
ОЙ, нихрена оно не обобщается) такая ориентированная площадь всегда равна площади "основания". Был невнимателен. А жаль)

ark21

да нормально все на вмк.
пост про студентов третьего курса - придирки сплошные, про синтаксис так ппц вообще
понятно, что промышленному программированию не учат, но оно и не надо особо имхо.
я когда поступил прогать не умел вообще, на третьем курсе устроился программистом. без каких-либо проблем. И таких в общем-то много было

Serab

Рад за тебя, бро!
Но это ничего не доказывает, в нормальных западных вузах ребята с нуля и не тому учатся.

ark21

общаюсь по работе с "ребятами из нормальных западных вузов"
в целом не могу сказать, что они меня чем-то сильно впечатляют
вообще говоря на западе скорее обратное мнение - что русские очень хороши во всяких программированиях и смежных областях
Вопросы, которые поднимаются в трэде касательно 3го курса вмк (типа знания синтаксиса) - это очень прикладные знания, такое можно ожидать от выпускника училища. Да, эти знания могли бы давать в вузе тоже, но мне кажется это совсем не главное.

serega1604

>Вопросы, которые поднимаются в трэде касательно 3го курса вмк (типа знания синтаксиса) - это очень прикладные знания, такое можно ожидать от выпускника училища.
ахуеть, т.е. третьекурсник вмк не обязан знать синтаксиса хотя бы одного ЯП? тогда логично предположить, третьекурсники физфака не должны знать, как пользоваться динамометром, а третьекурсники химфака не обязаны хоть раз в живую видеть, как выглядит пробирка, достаточно картинок в учебнике.

olegusmaximus

ВМК же не исключительно программистов готовит, на первых двух потоках основной упор идет на прикладную математику.

Serab

Ну вообще, опыт показывает, что нормальные студенты, которые знают математику, и программку могут написать вполне уверенно. Там могут быть неточности, которые заметит программист, но это вообще не главное.

Alena_08_11

третьекурсники физфака не должны знать, как пользоваться динамометром
Ща нагуглил что такое динамометр, смутно вспомнил что чем то подобным приходилось пользоваться на праках на 1-м курсе, и уж точно уже к концу второго курса я бы не ответил на вопрос "что такое динамометр". Не говоря уж о том, как им пользоваться.

apl13

Я знаю почему-то. Наверное, потому что не на физфаке учился.

Serab

не, ну мы в школе делали опыты в шестом классе, как сейчас помню, на наклонную поверхность грузик затаскивали :)
Потом в сунце на более приличном физпраке вроде не юзали.
Оставить комментарий
Имя или ник:
Комментарий: