![]() |
|
IT и Связь Обсуждение "айтишных" вопросов и средств связи |
![]() |
|
Опции темы | Опции просмотра |
![]() |
#121 | |
Заслуженный Участник
|
![]() Цитата:
А в реале получается, что бОльшую часть времени я трачу в перерывание исходников ядра на предмет "почем этот гребаный select не работает" и на кодирование извращенной логики заказчика, больше всего похожей на пресловутую инструкцию к бетономешалке - а тут что Джава, что Хаскель - один хрен. |
|
![]() |
![]() |
Благодарность от: | KaraNagai (21.06.2007) |
Зарегистрируйтесь или войдите под своим именем, чтобы спрятать этот рекламный блок |
![]() |
#122 |
Спам-робот
|
![]()
Я вот еще о чем подумал - тут народ пишет про ревью кода, красоту синтаксиса, компактные алгоритмы хождения за три дерева...
А сколько вот вы в своей жизни встречали коммерческих программистов которых красота синтаксиса и изящество кода (который только он и понимает, гы) интересовала больше чем кружка пива? Я вот раньше тоже этим страдал - попытками написать изящно и коротко. А потом понял - неправильно это, большинство кода должен быть читаемое, пусть даже в ущерб производительности. Исключения бывают - но не так уж много по сравнением с общим кодостроительством в мире. Юра вон не может не писать оптимизированно для своего графического движка да я не имею права писать медленный код в базе - а Антон вполне может себе позволить вольности в угоду читаемости и легкой расширяемости в будущем.
__________________
My Church is Black... |
![]() |
![]() |
Благодарность от: | vovick (22.06.2007) |
![]() |
#123 |
My name is Exaybachay
|
![]()
так, прошу прощения, заели заказчики. но тем не менее я свой кусочек написал 867 байт исходник. решает квадратные уравнения. без излишеств навроде эксепшнов, заворачивания мембер дейта в функции и допусков и посадок на сравнениях, вообщем-то для серьезного вычислительного кода нужных. ну и без комментов. не экономил ни на чем, писал как писал бы под себя, если бы мне во многих кусках кода понадобилось решение квадратных уровнений
![]() код выложу как только свой выложит людвиг, чтобы не замутнять его сознание ![]() ![]() ![]() в идеале конечно бы хотелось от людвига класс (ибо такова была постановка), но можно сравнить и с функцией.
__________________
митьки никого не хотят победить |
![]() |
![]() |
![]() |
#124 | |
Заслуженный Участник
|
![]() Цитата:
Что вобщем-то окей, но я не считаю это программированием. Это скорее клепание прикладного кода. Могу даже так переформулировать: задачи, которые не требуют хоть каких-то знаний более низкого уровня, не интересны, потому что к науке/искусству/ремеслу (нужное подчеркнуть) программирования не имеют приямого отношения. Как-то так. |
|
![]() |
![]() |
![]() |
#125 | ||
Редкий собеседник
|
![]() Цитата:
![]() Акцент на самом деле должне быть вот здесь ![]() ![]() Цитата:
![]() ![]()
__________________
Steve Jobs:"It's better to be a pirate than to join the Navy." -- Odyssey: Pepsi to Apple |
||
![]() |
![]() |
![]() |
#126 |
Заслуженный Участник
|
![]()
Kara, а ты помнишь о чем мы говорили? Мне кажется первым должен выложить ты, причем решить задачу в лучших традициях Джавы, или как там завещал великий Гослинг, и ни в коем случае не страдать минимализмом. И еще обязательно добавить хотя бы один use case, и тоже в традициях, пожалуйста.
Мне на Си доказывать нечего, кроме как показать как не-ОО подход экономит понятия и код, что к Си прямого отношения не имеет. Это такой стиль программирования, который хоть и не пропагандируется в коммерческом мире, но его на самом деле никто не отменял. Так что после вас ![]() А ты почитал статьи по ссылкам? Они хорошие, поверь, особенно вторая. Там человек доказывает то, что я пытаюсь тут сказать. |
![]() |
![]() |
![]() |
#127 | |||||||||
My name is Exaybachay
|
![]() Цитата:
Цитата:
![]() Цитата:
Цитата:
Цитата:
Ты просто в какой-то дефенсив позиции стоишь, спиной защищая С++. А он в защите от джавы особенно не нуждается вообщем-то. С++ - серьезный универсальный язык, на котором написать можно вообщем-то что угодно по функциональности. И этим он силен. А джава - язык для прикладных задач, у нее своя ниша. Очень большая, но ниша. Ничего плохого при этом в том, что люди начинают свой путь программиста с изучения джавы в качестве основного средства разработки нет. Потому что большинство программеров так или иначе имеют дело с прикладными задачами, как я выше и сказал. Цитата:
Если хочешь могу тебе дать исходный код моего классика в закриптованном виде. А пароль - когда функцию напишешь ![]() Цитата:
Цитата:
![]() ![]() Цитата:
__________________
митьки никого не хотят победить |
|||||||||
![]() |
![]() |
![]() |
#128 |
Заслуженный Участник
|
![]()
Kara,
Давай и вправду доведем эту дискуссию до конца, это будет очень показательно. Надеюсь всем понятно, что речь не о квадратных уравнениях, а о подходах и мышлении. Учитывая, что дискриминант должен быть доступен отдельно по твоему требованию, мы имеем как минимум два шага, что означает два метода в ОО или две функции в не-ОО. Так вот, есть как минимум два подхода: (1) ОО: объявляем дискриминант полем объекта и храним его там, плюс имеем отдельный метод для его вычисления и (2) функциональный подход: пишем функции не имеющие побочных эффектов (то есть никаких данных вне функций), первая из которых возвращает дискриминант, а вторая его берет в качестве параметра. Так вот, в ОО только из-за существования полей объекта порождается лишний код, который должен проверять в каком состоянии находятся эти поля. Ведь когда ты пишешь код для этого класса, никто тебе не сможет гарантировать, что его методы будут вызываться в нужной последовательности, и значит эти проверки нужны. С функциональным же подходом единицей кода являеся функция, которая требует передать в качестве парамтеров все что ей нужно. Функция - вещь куда более компактная чем класс, ее легче понять и легче отладить. Но в Джаве в дополнение к этому есть еще hassle исключений. Объект, который неверно использовали, должен выкинуть исключение, причем если я правильно помню, ты должен декларировать функции как выкидывающие исключения, и тем самым заставить пользователя обязательно их обработать. Вот тебе еще лишний код. Вот это я и имел ввиду говоря "как завещал великий Гослинг" :) И мне кажется ты понимаешь все это, и поэтому не хочешь выкладывать свой код. :) P.S. У функционального подхода (вообще, не в этом случае) есть еще одно очень мошное преимущество: код легко распараллеливается, как раз потому что функции не имеют побочного эффекта. |
![]() |
![]() |
![]() |
#129 | |
Редкий собеседник
|
![]()
Ты прекрасно понимаешь о чем речь, я уже говорил раньше и еше раз скажу... уже словами вики...
Цитата:
Правильно, хорошо если бы все это понимали. Я зашишаю не С++, а то что после изучения С++ программист знает больше чем после изучения Явы, и уж точно не меньше, и никак не наоборот, например, начиная от дверей института. Дальше, "опыт - сын ошибок трудных", и там дистанция в технических знаниях уже увеличивается, а прикладные сравнивать трудно - задачи решаются разные, как правило.
__________________
Steve Jobs:"It's better to be a pirate than to join the Navy." -- Odyssey: Pepsi to Apple |
|
![]() |
![]() |
![]() |
#130 | |
My name is Exaybachay
|
![]() Цитата:
Насчет дискрименанта - дискрименант как таковой не то чтобы требуется. Просто он является именованной сущностью и на в изначальной постановке не требуется, но может потребоваться по понятным причинам. Вообще спор "функция vs класс" неверен в корен. Класс реализует сущность "квадратное уровнение", функция ее не реализует. Преимущества у функционального подхода разумеется есть, я это не оспариваю. В данном случае моей изначальной мотивацией было сравнить похожие куски кода на простой задаче. Понятное дело что функционально можно и под джавой написать. Так... дочку укладывать пошел, вернусь - доотвечу ![]()
__________________
митьки никого не хотят победить |
|
![]() |
![]() |
![]() |
#131 | |
Заслуженный Участник
|
![]() Цитата:
Вот пример (ничего, что на С++ напишу - я боюсь слегка ошибиться в синтаксисе Java) class SqEqSolver { private: SqEqSolver(double a, double b, double c) { // equation solving skipped } }; использование: SqEqSolver s(10, 16, 2); и дальше можно использовать и дискрименант и корни можно и по-красивше написать |
|
![]() |
![]() |
![]() |
#132 | ||
My name is Exaybachay
|
![]() Цитата:
Да и не суть все это. Если говорить о размере продуктов, надо говорить о размере деплоймента. Называй ты это исполняемыми модулями или не называй - не суть. Суть в том что у тебя на диске продукт занимает столько-то и столько-то места. Цитата:
Кстати, вот что ты думаешь по поводу давнишнего спора о том, следует ли студентов учить сразу С++ или правильнее сначала их прогнать через straight С? ![]() ![]()
__________________
митьки никого не хотят победить |
||
![]() |
![]() |
![]() |
#133 | |
Заслуженный Участник
|
![]()
Правда? А перепиши на Джаву вот это:
Код:
function Y(le) { return function (f) { return f(f); }(function (f) { return le(function (x) { return f(f)(x); }); }); } ![]() Ludwig добавил 22.06.2007 в 09:05 Цитата:
Именно поэтому мне не терпится взглянуть на код Kara ![]() Последний раз редактировалось Ludwig, 22.06.2007 в 08:06. Причина: Добавлено сообщение |
|
![]() |
![]() |
Зарегистрируйтесь или войдите под своим именем, чтобы спрятать этот рекламный блок |
![]() |
#134 | ||
My name is Exaybachay
|
![]() Цитата:
а язык-то ясно какой - джаваскрипт. мог бы и не подсказывать насчет "на каждом компьютере". Цитата:
мне вот на твой код не терпится посмотреть. еще не написал? не понимаю почему ![]()
__________________
митьки никого не хотят победить |
||
![]() |
![]() |
![]() |
#135 | ||
Заслуженный Участник
|
![]() Цитата:
|
||
![]() |
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщ. |
Ирландеи не хотят учиться на IT. | Benjamin | Общие темы | 88 | 26.06.2007 14:13 |
Поехать в Ирландию учиться | igorr | Образование | 4 | 29.03.2007 22:13 |
нашли где учиться... | AVK | Само приползло | 6 | 13.03.2007 00:27 |
где учиться.. | mary | Образование | 33 | 12.11.2005 09:47 |
Где учиться на бухгалтера и др. вопросы | Anonymous | Образование | 8 | 07.08.2003 19:52 |