- 1
return (o1.isRecomend()? "true":"false").compareTo(o2.isRecomend() ? "true" : "false");
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+87
return (o1.isRecomend()? "true":"false").compareTo(o2.isRecomend() ? "true" : "false");
SmackMyBitchUp 26.08.2011 15:16 # +1
roman-kashitsyn 26.08.2011 15:16 # +4
К сожалению, читабельность осталась на том же уровне.
gegMOPO4 26.08.2011 21:11 # +1
roman-kashitsyn 26.08.2011 21:46 # +1
saab 27.08.2011 12:03 # −1
return o1.isRecomend() ^ o2.isRecomend();
roman-kashitsyn 27.08.2011 12:05 # +1
roman-kashitsyn 27.08.2011 12:16 # +1
saab 27.08.2011 14:41 # −1
return ( o1.isRecomend() ^ o2.isRecomend() )? 0:1;
ingenuus 27.08.2011 16:23 # +2
saab 28.08.2011 09:55 # −1
return o1.hashCode() - o2.hashCode()
при дополнительном условии, что хешкоды уникальны
tir 28.08.2011 12:10 # 0
roman-kashitsyn 28.08.2011 12:34 # 0
SmackMyBitchUp 28.08.2011 12:52 # 0
roman-kashitsyn 27.08.2011 16:26 # +2
saab 28.08.2011 09:56 # 0
elfenit 26.08.2011 15:19 # +1
return Boolean.valueOf(o1.isRecomend()).compare To(o2.isRecomend()) roman-kashitsyn, абсолютно точно)
SmackMyBitchUp 26.08.2011 15:22 # 0
wvxvw 27.08.2011 11:52 # 0
SmackMyBitchUp 27.08.2011 12:01 # 0
roman-kashitsyn 27.08.2011 12:02 # 0
Оператор ! - оператор отрицания и работает только с boolean.
Оператор ^ - оператор побитового XOR и работает только с интегральными типами.
В java нет автоматического преобразования из int в boolean.
wvxvw 27.08.2011 12:07 # 0
Судя по этой дискусси вы не совсем правы по поводу того, как работает ^, но мне просто не на чем проверить, да и спрашиваю только из праздного любопытства.
roman-kashitsyn 27.08.2011 12:15 # 0
roman-kashitsyn 27.08.2011 12:20 # 0
Fai 27.08.2011 13:38 # −2
SmackMyBitchUp 27.08.2011 12:30 # 0
если x и y - нули или числа равные, то при XOR получится 0. Значит ложь.
После выполнения оператора отрицания получилась бы истина.
x==y
wvxvw 27.08.2011 12:41 # 0
roman-kashitsyn 27.08.2011 12:50 # 0
SmackMyBitchUp 27.08.2011 13:06 # 0
roman-kashitsyn 27.08.2011 13:07 # 0
SmackMyBitchUp 27.08.2011 13:23 # 0
if(first^second) return 1; //true^false = true
}else//first = false
if(second) return -1;
return 0;
roman-kashitsyn 27.08.2011 13:44 # 0
SmackMyBitchUp 27.08.2011 13:58 # 0
"true".compareTo("false") = 14
"false".compareTo("true") = -14
Или далее вы просто смотрите если вернется не нуль, то положительное или отрицательное?
roman-kashitsyn 27.08.2011 14:04 # 0
SmackMyBitchUp 27.08.2011 14:07 # 0
roman-kashitsyn 27.08.2011 14:20 # 0
SmackMyBitchUp 27.08.2011 14:21 # 0
SmackMyBitchUp 27.08.2011 17:09 # 0
guest 30.03.2012 18:33 # 0
if(s)
return 0;
return -1;
} else {
if(!s)
return 0;
return 1;
}
guest 30.03.2012 18:36 # 0
if(f){
if(s)
return 0;
return 1;
} else {
if(!s)
return 0;
return -1;
}
wvxvw 27.08.2011 13:15 # 0
В том смысле, что (наверное) можно было бы сделать так: Но если метод isRecomend изначально должен был использоваться в такой ситуации, то и не понятно почему он boolean возвращает, если в принципе нужно число.
SmackMyBitchUp 27.08.2011 13:33 # +2
roman-kashitsyn 27.08.2011 13:43 # 0
wvxvw 27.08.2011 14:19 # 0
В том смысле, что он и грамматически и синтаксически не понятен. Т.е. у автора не сложилось ни спряжение ни правописание. Поэтому узнать из того, что написано о чем думал автор нельзя - есть много разных вариантов.
roman-kashitsyn 27.08.2011 14:29 # +2
wvxvw 27.08.2011 14:25 # 0
roman-kashitsyn 27.08.2011 14:30 # 0
wvxvw 27.08.2011 15:00 # 0
recommends()
recommended()
isRecommended()
Заметьте, что recommended() и isRecommended() - это не одно и то же семантически. Первое - использует переходной глагол (подразумевая, что объект действия, это объект владеющий методом), а второе - страдательный залог, что подразумевает, что объект владеющий методом был рекомендован кем-то. Т.е. o1 recommends you should stop smoking; o1 recommended you should stop smoking a while ago; o1 is, in fact a pack of cigarets, cigarets are not recommended by the ministry of health care.
wvxvw 27.08.2011 15:06 # 0
elfenit 27.08.2011 20:21 # 0
wvxvw 28.08.2011 10:10 # 0
roman-kashitsyn 28.08.2011 12:43 # 0
в принципе, и в java можно было бы так написать при использовании обёртки Boolean. Примитивные типы нужны для повышения производительности.
С этой задачей вроде бы неплохо справляется Scala 2.8: для программиста всё выглядело бы как объекты, я компилятор бы занимался оптимизацией упаковок-распаковок.
wvxvw 28.08.2011 13:21 # 0
Да, и, опять же, вы написали ненужный код, да и вообще compareTo это следсвие невозможности динамической типизации. Перед тем, как отвечать - послушайте выступление Steve Yegge на Googl'овской конференции, должно быть где-то на YouTube.
elfenit 28.08.2011 13:47 # 0
roman-kashitsyn 28.08.2011 14:00 # +1
Проблема не в статической типизации как таковой. Попробуйте haskell - там очень строгий контроль типов (даже Double и Int сложить просто так нельзя), и, тем не менее, код очень краток и выразителен, а типы обычно можно вообще не указывать. А развитый полиморфизм позволяет проделывать такие трюки, что дух захватывает.
Я не против динамической типизации. Я слышал много доводов за и против, и считаю, что оба подхода имеют право на жизнь. Реалии таковы, что в больших проектах (а java обычно используется именно в таких) статическая типизация подходит больше. Компилятор - это друг и помощник, а не враг, снижающий продуктивность. И чем больше проект, тем больше компилятор может сделать для вас.
P.S. Для написания небольших программ, выполняющих административные задачи, я, естественно, выберу python, а не java. Sometimes java is too verbose.
wvxvw 28.08.2011 14:01 # 0
Кроме того, выступление о котором я говорил - это примерно на час, а вы ответили раньше :)
roman-kashitsyn 28.08.2011 14:11 # +2
wvxvw 28.08.2011 14:24 # 0
SmackMyBitchUp 28.08.2011 14:26 # 0
roman-kashitsyn 28.08.2011 14:33 # 0
я набрал в гугле "Steve Yegge", на первой странице был результат c заголовком "Steve Yegge is an idiot". Поиск по видео "Steve Yegge google" дал что-то, связанное с Javascript на сервере (наверное, опять задвиги про Node.js). Дальше желания искать не было. Жалко тратить час на очередной silver bullet, есть дела поинтереснее.
wvxvw 28.08.2011 14:39 # −1
Ха-ха-ха... это, между прочим, человек много лет проработавший в Google, профессор в как минимум одном из самых престижных университетов США (в области программирования). Таких людей надо в лицо знать, а не в Google искать :)
roman-kashitsyn 28.08.2011 14:49 # +3
wvxvw 28.08.2011 15:18 # −1
Это, кстати, наряду с предыдущим утверждением: "я не читал / не слышал, но это говно" тоже замечательно отражает позицию типичного Java программиста :) "Мне все равно, какие аргументы существуют, я останусь при своем идиотском мнении, потому что я к нему привык / меня так научили". Не задумываясь о том почему и на какие деньги научили...
tir 28.08.2011 15:26 # 0
roman-kashitsyn 28.08.2011 15:27 # +4
я такого не говорил. Я просто сказал, что переубедить меня не получиться, потому что я сам уже всё попробовал на практике. Динамическая типизация НЕ ЛУЧШЕ статической, у каждого подхода есть свои плюсы и минусы, и каждый более выгоден в определённых условиях.
> меня так научили
Меня "учили" в основном высшей математике и инженерии. Программирование в основном основано на самообразовании, разве нет?
> я останусь при своем идиотском мнении
я смотрю, вы считаете идиотом всех, кто полностью не принимает вашего мнения. Удобная позиция.
P.S. за ссылку спасибо, посмотрю.
SmackMyBitchUp 28.08.2011 15:34 # 0
Ну не принимает он вашего мнения, чего уж из-за этого так беситься? ЧСВ?
roman-kashitsyn 28.08.2011 15:37 # +1
wvxvw 28.08.2011 15:38 # 0
tir 28.08.2011 15:55 # 0
Срошу иначе: лучше динамическая типизация или статическая?
roman-kashitsyn 28.08.2011 16:30 # 0
Факты заключаются в том, что операционные системы и всякий крупный софт типа офисных пакетов пишется и будет писаться на статически типизированных языках.
В то время как никто не будет писать скрипты для html-страничек на ANSI C.
wvxvw 28.08.2011 16:42 # 0
Что касается Java - то это была стратегия Sun, которые очень уж хотели соревноваться с Microsoft, и вкладывали безумные деньги в продвижение языка, не взирая на технические показатели. Вот и получилось, что менеджеры по продажам сработали лучше программистов (Sun за этот счет собирались продавать свои сервера). Нет ничего приниципиально хорошего, или такого, что бы сделало Java самым подходящим для "серьезных" програм, это все как-бы пропаганда / маркетинг в лучшем случае... Мне несколько лет довелось побыть в customer advisory board дгугого крупного производителя ПО, можете мне поверить, технические соображения никогда не выдвигаются на первый план, да и вообще не влияют на принятие решений...
tir 28.08.2011 17:00 # +1
Вы сами только что сказали: ответ не известен.
Поэтому ваши фразы "...о вреде и некомпетентности обязательной статической типизации..." и "...только почему-то в языках с динамической типизацией можно использовать..." ничем не могут быть подкреплены.
Т. е. вы не можете сказать, что статическая типизация - однозначно зло, а приведение boolean к int - однозначно добро. Но при этом, сами фразы построены так, будто бы это истина в первой инстанции.
Нет идеальных языков. В Java для приведения boolean к int надо сделать кое-какие телодвижения. И не более того. В других языках хватает своих косяков. За все надо чем-то платить. Так устроена жизнь.
Человек, считающий, что есть один универсальный язык программирования не может восприниматься всерьез.
roman-kashitsyn 28.08.2011 17:08 # 0
SmackMyBitchUp 28.08.2011 17:29 # 0
wvxvw 28.08.2011 21:06 # −1
Опять же, вы спорите с классическими примерами... тут не обсуждаются другие варианты решения... вам демонстритуется проблема, когда свойство объекта изменяясь должно повлечь за собой изменение типа. Более глобально это выражается в том, что система типов в ОО языке - иерархическая, как правило построенная по принципу "ярлыков", т.е. о принадлежности объекта к типу судят по ярлыку, а не по содержанию. Это неизбежно прийдет в конфликт с действительностью, где о типе судят по содержанию / типов может быть столько, сколько аспектов.
roman-kashitsyn Что до моих утверждений - вы аппелируете к ничего не значащему факту, количество одновременно заблуждающихся людей не делает заблуждение более истинным (более того, если это не заблуждение, то и не делает его более ложным) оно просто не релевантно. Курение на протяжении почти ста лет считалось полезным для здоровя, много столетий люди верили, что у Моисея росли рога на голове, не смотря на то, что это была просто описка переводчика. И история массового идиотизма этими двумя фактами не ограничивается. Увы, человечество чаще допускает ошибки, чем принимает правельные решения.
Более того, я прямо сейчас наблюдаю то, как невероятными усилиями и вливаниями средсвт, абсолютно не взирая на технические предпосылки, одна мега-корпорация продвигает ущербную технологию просто из исключительно меркантильных соображений, в то время как потрясающее количество уважаемых людей поддерживают и не поморщившись подвердят любую глупость сказанную маркетологами этой самой корпорации.
tir: что-до единственного языка :) Я предполагал, что вы поленитесь посмотреть что это за язык, это вобщем-то не язык программирования, но шутка была даже не в этом :) Если вы подумали, что я каким-то образом считаю, что JavaScript лучше Java - то вы ошиблись. Ровно точно так же, как если бы вы предположили, что если в классе мальчиков не меньше девочек, то их обязательно больше.
roman-kashitsyn 28.08.2011 21:44 # 0
Джошуа Блох, идеолог java, "много лет работающий в google". Никлаус Вирт, автор Pascal, Modula и Oberon'а, ставшего прародителем Java. Бьёрн Страуструп, автор С++. Торвальдс, автор сладкого Linux. Кёрниган и Ричи, родители UNIX и ANSI C. Дональд Кнут, всю жизнь работающий с императивными процедурными языками, подаривший нам Art of Programming и TeX. Они все ошибались.
Ваши "проблемы" опять высосаны из пальца и ничего не доказывают. В контексте реальной задачи нашлось бы множество решений этой проблемы в рамках парадигмы OOP (скорее всего даже наследование было бы ненужным), более безопасных (быть может, более гибких), чем простая реализация на динамическом языке, но требующих чуть больше кода.
wvxvw 28.08.2011 22:00 # −1
roman-kashitsyn 28.08.2011 22:17 # +2
roman-kashitsyn 28.08.2011 22:22 # 0
Мне нравиться делать. Языка и со статической, и с динамической типизацией позволяют сделать очень много, причём обычно они друг другу не мешают и позволяют подходить к проблемам с разных сторон. Чем больше с вами общаешься, тем больше складывается ощущение, что вы больше теоретик, нежели практик.
wvxvw 28.08.2011 22:07 # −1
История статической типизации в иллюстрациях.
tir 28.08.2011 22:42 # +1
П. С. С естественными языками тоже самое.
wvxvw 28.08.2011 23:04 # −1
SmackMyBitchUp 28.08.2011 23:56 # 0
Тот факт, что общество стало цивилизованее говорит лишь о том, что люлей можно получить более цивилизованным способом xD
roman-kashitsyn 29.08.2011 06:25 # +4
tir 29.08.2011 07:32 # 0
roman-kashitsyn 29.08.2011 07:41 # +2
wvxvw 29.08.2011 09:17 # −3
Мне не особенно приятно вспоминать о том, что мне предлагали в этом поучавствовать. Собственно, в моем случае, от меня даже не требовалось писать ничего, просто попросили подписаться под "цитатой", которую я, естесственно, не говорил. Как бы есть еще такой момент... самые упрямые спорщики - это футбольные болельщики, люди которые верят в правоту какой-то политической партии, приверженцы какой-нибудь религии, X-box / PS2 фанаты, ну и Java программисты :) В каждом случае причина такого поведения в том, что спорщики не понимают о чем спорят, именно поэтому ими легко манипулировать.
Java появилась потому, что в Sun хотели создать рынок сбыта своим разработкам. Программистов в то время было, хорошо если 1% по отношению к сегодняшнему состоянию, обучение программистов было долгим и затратным. Таким образом Java стала своего рода PHP своего времени - максимальное упрощение интерфейса и реализации, только ради того, чтобы больше людей научилось на ней писать. С расчетом на то, что когда таких людей станет очень много, продавать технологии основанные на Java будет кому. Кроме того, Sun действительно нанимали лучших / самых известных программистов того времени для работы над языком, но если вы почитаете отзывы того времени, а не отзывы написанные людьми в мире, где Java уже была суровой действительностью... вы увидите, что в целом реакция была недоумением по поводу того, как столько хороших людей сделали такую гадость. Ну а потом это стало сильно напоминать историю России 20-го века с гегемонией пролетариата и единственной, самой лучшей партией :) Так же появлялись мировые религии и футбольные клубы... единственными, кто в этой группе выглядит пристойно - разработчики игровых приставок, они хотя-бы за шутки по этому поводу не лезут в драку.
tir 29.08.2011 09:42 # +4
В конце концов: никто здесь не говорит, что Java - это единственный правильный язык и круче него нет.
И вообще вся дискуссия завязалась с фразы, что языки со статической типизацией ущербны. И Java здесь не при чем.
П. С. А маркетинг есть маркетинг. И уж Sun в чем-то обвинять глупо.
wvxvw 29.08.2011 10:39 # −2
Глупо Sun в чем-то винить? - почему? Фраза "X глупо потому что Y" имеет смысл. Фраза "X глупо", если причина не очевидна - называется демагогией.
tir 29.08.2011 10:43 # 0
Глупо обвинять Sun в том, что "в Sun хотели создать рынок сбыта своим разработкам. ... С расчетом на то, что когда таких людей станет очень много, продавать технологии основанные на Java будет кому..."
roman-kashitsyn 29.08.2011 09:48 # +3
Я лично никогда не считал себя "Java-программистом". Да, я зарабатываю неплохие деньги, программируя на Java. Но я знаю ещё несколько языков, динамических и статических, и если завтра мне предложат работать в Google с условием сменить Java на C/python/haskell/lisp (хотя в google широко используют java, но это не важно) - я соглашусь без колебаний (кому я там нужен... но это тоже не важно). Меня всегда интересуют идеи, которые я могу использовать в своих программах (immutable data, data-driven development, Design pattern, actors), а не песни маркетологов.
И так, между прочим, java родилась в небольшой лаборатории в глубине Sun, когда один из основных разработчиков устал писать один и тот же код для разных микроконтроллеров, и стала передовым языком не из-за брут-форса Sun, а из-за простоты освоения и распространения программ в internet в виде аплетов. Java в теперешнем её виде - дитя сети, правда, из аплетов она перебралась на серверную сторону. Java хорошо справляется с решением многих проблем, для программирования создана прекрасная инфраструктура. Я могу запускать скомпилированные программы на любой платформе. Поэтому мне нравится java.
> спорщики не понимают о чем спорят
Да и вы не понимаете, о чём спорите, вы ведь не пишете на Java. Только те, кто много программирует на языке могут в полной мере судить о его достоинствах и недостатках.
wvxvw 29.08.2011 10:56 # 0
Тут даже скорее не проблема с тем, что в Java это так (в тех же регулярных выражениях модель еще проще), а в том, что это подается как универсальная модель, и когда указывают на ее недостатки, люди отказываются их видеть. Собственно, поэтому пример с футбольными болельщиками, соцреализмом и религиозными фанатиками.
И не важно как начиналась... ту Java, которая была в лабораториях никто не видел, кроме работников лабораторий. Если бы она продолжала в том же духе, то сегодня людей, которые пишут на Java было бы столько же, сколько и людей пишущих на Erlang, хорошо если. Мы имеем то, что имеем благодарая огромным финансовым вложениям Sun. Собственно, Joel Spolsky тогда же об этом писал. У него была статья где он говорил про commodity и о том как разные промышленники этого добиваются и для чего используют. Java там была одним из примеров. Я сейчас, увы, ссылку не найду.
roman-kashitsyn 29.08.2011 10:59 # +5
LOL
Ржу нимагу
tir 29.08.2011 12:15 # +2
Почему автомобили не летают в космос? Да потому, что автомобиль - это автомобиль, а не космический корабль. И он должен ездить по земле, а не болтаться на орбите.
Кто подает это за универсальную модель? Вы верите всему, что показывают по телевизору? Вы верите во все, что прочитали в интернете? Вы верите рекламе?
Человеку дан мозг, чтобы анализировать полученную информацию и на основе анализа делать выводы, а не принимать все на веру. Человеку дана свобода выбора инструментов для достижения цели. И если вы выбрали лопату чтобы помыть окна (в рекламе она с этим хорошо справлялась) - это ваша личная проблема. И рекламщики тут непричем.
А Джоэл тот еще... Java-ненавистник :)
wvxvw 30.08.2011 11:11 # −2
Мне тут как раз на днях попался хороший пример. Вы, наверное никогда не задумывались над тем, что слово "мы" глупое / неоднозначное. И это потому, что нельзя сказать, а значит ли оно "ты и я", или "тот парень и я, но не ты". Удивительно в этом то, что индейцы племени Чироки и жители Папуа Новой Гвинеи (прямо скажем, папуасы), не зависимо друг от друга зафиксировали этот факт в своих языках. Более того, если им приходится учить, например, английский, то они просто не могут жить без своих местоимений. Исследователи, поразмыслив над фактом пришли к мнению, что папуасы вообще-то правы, а все языки индо-европейской группы - ущербные. И представьте, что индо-европейские языки существуют несколько тысяч лет, по сравнению с этим существование Java - вообще ничего.
Что такое "правильно" - это когда теория (абстракция), примененная к любым фактам, которые мы можем найти в действительности дает такой же результат, как и сама действительность. Например. Вы решили описать мир исходя из того, что в какой цвет окрашено. Вы создали класс "Цвет", унаследовали от него все цвета радуги, белый и черный. Вле больше конкретизируя, вы дошли до создания класса "Снег", и вы сделали его подвидом класса "Белый". Вышли с утра на улицу - посмотрели, снег белый. Спросили у знакомых - говорят, белый. Но вечером возвращаясь с работы увидели, что, в местах, где фонарей нет - снег серый, а там, где фонари есть - желтый, взяли прибор ночного видения - посмотрели, а он вообще, в одних приборах - зеленый, в других - красный... Так вот, проблема в том, что тип, в реальном мире определяется контекстом, и привязать его к объекту, как ярлык, как это сделано в Java (и многих других похожих языках) не правильно. По-этому в таких системах есть дополнительные возможности для типизации. В Java - интерфейсы. Но со снегом будет проблема, т.как если вы реализуете в одном классе интерфейсы "Белый" и "Черный", то определить цвет вы уже не сможете...
roman-kashitsyn 30.08.2011 11:19 # +2
wvxvw 30.08.2011 11:41 # −5
tir 30.08.2011 11:44 # +4
соглашусь с roman-kashitsyn: то как вы предлагаете использовать наследование - глупо. очень глупо.
roman-kashitsyn 30.08.2011 12:31 # 0
tir 30.08.2011 12:44 # +2
Каждый из нас склонен считать, что видит явления такими, каковы они есть в действительности, что он объективен. Однако дело обстоит совсем не так. Мы видим мир не таким, какое он есть, а таким, каковы мы сами, – или же таким, каким настроены его видеть.
Яркий классический пример: кого вы видите на изображении?
http://dl.dropbox.com/u/24433581/s.gif
roman-kashitsyn 30.08.2011 12:47 # 0
SmackMyBitchUp 30.08.2011 13:14 # +1
Есть снег. Его цвет - белый. Всё. А уж как отрисовать картинку со снегом - дело совсем другого класса.
Лично для меня - имя класса не может говорить о состоянии объекта. Вообще никак. Имею в виду состояние конкретного объекта. Тот же снег. Его цвет варьируется, это понимает каждый и все что нужно - узнать цвет или текстуру. Я же могу предложить сделать подобным образом:
Snow white_snow = new Snow("white.png");
И так далее. А вы начинаете плодить классы которые имеют огромные ненужные пересечения и единственный плюс от которых - ярлык(по-сути это ничто ради таких жертв). Лично мне было бы неприятно видеть подобную картину(все переработано ибо наследовать класс снега от конкретного цвета это жуть):
Snow<-BlackSnow
Snow<-WhiteSnow
А вообще - вам правильно сказали - существует композиция
gegMOPO4 29.08.2011 12:40 # +3
Вы далеки от истины как никогда.
CPPGovno 29.08.2011 10:33 # +1
1)Вы считаете, что инструменты(языки) упрощать не нужно? 2)Не нужно инструменты специализировать под задачу, дабы ими можно было проще и эффективнее пользоваться? 3)Вы противник только Java или есть ещё языки, ненавистные вам?
wvxvw 29.08.2011 10:43 # −2
roman-kashitsyn 29.08.2011 10:45 # 0
roman-kashitsyn 29.08.2011 10:47 # 0
tir 29.08.2011 10:47 # 0
SmackMyBitchUp 29.08.2011 10:54 # +4
wvxvw 29.08.2011 11:22 # 0
Собственно, я с вами всеми согласен, всем всех благ и творческих подвигов.
roman-kashitsyn 29.08.2011 11:28 # 0
wvxvw 30.08.2011 11:33 # −2
Проблема усугубляется тем, что японские промышленники, которые делают текстовые редакторы, печатают книги и т.п. не хотят использовать латиницу, т.как это поставит их в ситуацию, когда они будут конкурировать с иностранными компаниями. Естессвенно, делать им это очень не хочется, и, это потенциальные убытки.
Аналогичная ситуация с Java - она ничем не лучше, и ни по каким критериям не должна была бы быть "стандартом в промышленности", ее поддерживают в таком состоянии заинтересованные компании, у которых tool-chain поменять стоит очень дорого, да и делают они продукты для Java-программистов... Точно такая же ситуация с JavaScript... мне просто последнее по роду деятельности чаще приходится слышать - вот, один из заседателей верховного жюри честно в этом признается:
roman-kashitsyn 30.08.2011 11:40 # +1
wvxvw 30.08.2011 11:53 # −1
Кроме того, если бы я предлагал перейти на какой-то другой язык, я бы так и сказал :S Есть языки, которые сегодня развиваются, и они пытаются принять в рассчет недостатки существующих. Названия вам вряд ли о чем-то скажут. Я, сейчас пытаюсь познакомиться с ERROL, но это язык запросов к базам данных. Причина того, что эти языки создаются - ущербность существующих. Совсем не нужно иметь лучший заменитель уже существующего, чтобы понять, что существующий - плохой...
roman-kashitsyn 30.08.2011 11:54 # 0
wvxvw 31.08.2011 09:26 # 0
Просто в существующих языках система типов очень упрощенная по отношению к тому, как оно вообще может быть. Нет возможности выразить следующие отношения, например: типы в принципе не совместимы (в Java любой класс может реализовать любой интерфейс, а в жизни два типа могут быть взаимоисключающими). Типы только частично совместимы, но существуют объекты принадлежащие только к одному из них. Типы совпадают, но линии наследования не совпадают. С другой стороны, в жизни бывают ситуации, когда в зависимости от контекста один и тот же объект будет типа не совместимого с другим, а в другом контексте - именно того типа, с которым он был до этого не совместим.
Кроме того, есть технические ограничения - имена свойсвт у двух объектов могут быть одинаковыми, при этом указывая на разные вещи.
Чтобы написать эффективно работающую программу нужно уметь отразить действительное состояние вещей. Взамен этому Java и похожие языки предлагают формализм не похожий на реальность. Программирование в смысле уровня понимания окружающего мира находится примерно на стадии человеческой мысли середины 19-го века, когда метафизическая [трансцедентая] картина мира доминировала. Т.е типы в программировании не могут выразить дуализм, динамизм и т.д. Это удобная концепция для того, чтобы примерно объяснить многие явления, но соотносится с действительностью, как Верлетова физика с физикой. Статическая типизация никогда не позволит этого сделать.
roman-kashitsyn 31.08.2011 09:55 # +3
Мы с Вами никогда не придём к общему мнению, слишком разный уровень мышления. Поэтому предлагаю закончить этот бессмысленный спор.
roman-kashitsyn 30.08.2011 11:58 # +4
wvxvw 31.08.2011 09:20 # −1
roman-kashitsyn 31.08.2011 09:36 # +1
Если инструмент не удобен для решения каких-то задач, это не означает, что он плох. Это означает, что кто-то пытается завернуть в стену гвозди отвёрткой.
SmackMyBitchUp 31.08.2011 14:08 # 0
О применении своего бреда вряд ли задумывался хотя бы один философ. Хотя вру. Вроде читал, что многие пытались найти ответы на интересующие их вопросы, а не несли бред. Ну, а сейчас, как верно подметил wvxvw - не 19й век и бреда полно.
CPPGovno 30.08.2011 16:53 # 0
roman-kashitsyn 30.08.2011 16:57 # +3
LOL
Это самая смешная шутка за сегодня!
CPPGovno 30.08.2011 16:58 # 0
^_^
roman-kashitsyn 29.08.2011 15:49 # +1
1. Сегодня популярность языка определяется маркетингом, наличием обученных программистов и опен-сорсных библиотек.
2. В ближайшие 10 лет рейтинг популярности языков вряд ли измениться.
3. Динамические языки могут быть быстрыми благодаря JIT и многопоточности, но пока они тормозят, ибо все бОльшая часть средств уходит на разработку статических языков.
4. Тулзы для динамических языков писать можно и нужно, но принципы их разработки отличаются от принципов построения тулов для статических языков.
5. Как бэ намекнул, что JavaScript - язык будующего.
В общем, ничего принципиально нового, но смотреть довольно интересно.
CPPGovno 28.08.2011 15:41 # −4
Забавная java.. Во всех нормальных языках уже давно:
o1.isRecomend()==o2.isRecomend()
roman-kashitsyn 28.08.2011 15:42 # +1
CPPGovno 28.08.2011 15:43 # 0
roman-kashitsyn 28.08.2011 15:44 # 0
CPPGovno 28.08.2011 15:46 # 0
gegMOPO4 29.08.2011 12:42 # 0
Читать о четвёртом аргументе.
gegMOPO4 29.08.2011 12:28 # 0
wvxvw 31.08.2011 09:22 # 0
gegMOPO4 31.08.2011 10:18 # +1
roman-kashitsyn 31.08.2011 09:26 # 0
?
tir 28.08.2011 12:07 # 0
SmackMyBitchUp 28.08.2011 12:54 # 0
roman-kashitsyn 28.08.2011 13:05 # 0
tir 28.08.2011 13:51 # −1
1. То что используется стандартное поведение, скорее всего удовлетворяет бизнес логике, т. е. с точки зрения приложения в данном случае true должно быть больше чем false.
Если вдруг (что очень-очень-очень мало вероятно) создатели Java решат, что false должен быть больше чем true, и внесут изменения в реализацию Boolean, то приложение от этого не пострадает.
2. Реализация тривиальна, и читается также легко как и javadoc
elfenit 28.08.2011 14:31 # 0
Первое - в джаву никогда не вносятся такие изменения, потому что ломают совместимость.
Второе - в данном случае это код из реализации compareTo кастомного объекта - поэтому даже если такое случится - правильнее соответствующим образом поменять поведение.
tir 28.08.2011 15:16 # 0
elfenit 28.08.2011 17:56 # 0
tir 28.08.2011 17:59 # 0
elfenit 28.08.2011 13:45 # 0
SmackMyBitchUp 28.08.2011 14:05 # 0
Если бы isRecommend() возвращал не базовый тип, а экземпляр класса Boolean, то все было бы куда проще:
return o1.isRecommend().compareTo(o2.isRecommen d());
roman-kashitsyn 28.08.2011 14:08 # 0
На самом деле Java-программисты почему-то не особо любят использовать обёртки там, где можно без них обойтись.
elfenit 28.08.2011 14:17 # 0
roman-kashitsyn 28.08.2011 14:25 # 0
SmackMyBitchUp 28.08.2011 14:22 # 0
Скоро перестану грешить, как диплом закончу.
Ибо, как оказалось, негде мне будет работать Java программистом, буду пыхо-быдло-кодером хамяком.
roman-kashitsyn 28.08.2011 14:40 # +1