- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
Немного о пропертях
"Лично мне свойства не нравятся и я был бы рад, если бы в Microsoft решили убрать
их поддержку из .NET Framework и сопутствующих языков программирования."
"Я считаю, что разработчики используют свойства намного чаще, чем следовало
бы. Достаточно внимательно изучить список различий между свойствами и поля-
ми, чтобы понять: есть очень немного ситуаций, в которых определение свойства
действительно полезно, удобно и не запутывает разработчика. Единственная при-
влекательная черта свойств — упрощенный синтаксис, все остальное — недостатки,
в числе которых потеря в производительности и читабельности кода. Если бы я
участвовал в разработке .NET Framework и компиляторов, я бы вообще отказался от
свойств, вместо этого я предоставил бы разработчикам полную свободу реализации
методов GetXxx и SetXxx. Позже создатели компиляторов могли бы предоставить
особый упрощенный синтаксис вызова этих методов, но только при условии его
отличия от синтаксиса обращения к полям, чтобы программист четко понимал, что
выполняется вызов метода!"
Джефри Рихтер
kegdan 29.04.2016 15:22 # 0
nihau 29.04.2016 15:41 # +1
А еще какие?
Читабельности: и как же это автопроперти мешает читабельности?
Производительности: за производительность пусть борется конпелятор, а код должен быть читабельным (но не стоит убивать производительность).
guest 29.04.2016 15:55 # 0
guest 29.04.2016 16:32 # 0
и бряку не поставить
Her 29.04.2016 16:54 # 0
Мелкий Билли тоже обещал что 640 кб памяти хватит всем
kegdan 29.04.2016 17:17 # 0
Her 29.04.2016 18:36 # 0
kegdan 29.04.2016 18:42 # 0
Her 29.04.2016 18:52 # +1
kegdan 29.04.2016 19:01 # 0
Но сами проперти мне не нравятся. явное лучше неявного
3.14159265 06.05.2016 16:30 # +1
Многие до этой простой истины годами не могут дойти.
kegdan 06.05.2016 16:34 # +4
Моргни, если я прав
roman-kashitsyn 06.05.2016 18:29 # +2
Добро пожаловать в клуб.
3.14159265 06.05.2016 18:31 # +2
bormand 06.05.2016 18:45 # +2
inkanus-gray 29.04.2016 16:56 # +2
Dummy00001 02.05.2016 16:45 # +1
я не знаю про пропертисы в шарпах, но везде где видел было полезной фичей. это не то что бы кто-то заставляет пользоваться.
guest 29.04.2016 17:14 # +3
А что Рихтер предлагает сделать с WPF и прочими, где байндинг на проперти - чуть ли не основа технологии? Вон не прошло и десяти лет, а МС уже запилили nameof(), чтобы даже от строкотипизации в INotifyPropertyChanged уйти... Куда это всё теперь? Возврат к ручному бойлерплейту а-ля жаба? Ну не, спасибо...
guesto 02.05.2016 03:08 # 0
intellij генерит аксесоры и мутаторы на ура
а kotlin так и вовсе не требует
d_fomenok 29.04.2016 17:53 # 0
@@
Попробовал set_PropertyName(), компилятор навалял пиздюлей и сказал мол низзя прямо так вызывать методы доступа.
@@
Но ведь можно написать свой ЯП с таким синтаксисом! Джефри Рихтер, сасай.
kegdan 29.04.2016 17:56 # 0
Xom94ok 29.04.2016 18:08 # +5
Dummy00001 02.05.2016 16:41 # +1
guesto 02.05.2016 16:44 # +4
j123123 02.05.2016 16:59 # 0
guesto 02.05.2016 17:04 # 0
C# очень богатый ЯП, один из лучших современных ЯП.
В .NET есть JIT, и он отлично работает.
j123123 02.05.2016 17:13 # +1
Нет.
>равно как и C# Джаву.
Спорно.
>C# очень богатый ЯП, один из лучших современных ЯП.
Нет
>В .NET есть JIT, и он отлично работает.
Да, но нет никакого динамического анализа кода, который осуществляется например в HotSpot. HotSpot умеет собирать в рантайме статистику, и на основе этой статистики он умеет делать некие оптимизации.Примерно как profile-guided optimization. В .NET рантайме ничего такого нет, насколько я знаю
kegdan 02.05.2016 17:19 # +3
>> Спорно.
>> Нет
отличная аргументация
j123123 02.05.2016 17:23 # 0
Ну какие утверждения, такая и аргументация. Я например могу заявить:
Трава фиолетовая
Слоны летают в космосе
Тараканы умеют разговаривать на человеческом языке
и ожидать на подобный бред каких-то аргументированных опровержений было бы глупо, не находите?
Vasiliy 04.05.2016 13:43 # +1
inkanus-gray 04.05.2016 17:42 # +1
https://pp.vk.me/c619516/v619516787/c9a0/p3rBS3WK7dc.jpg
3_14dar 04.05.2016 19:10 # 0
j123123 04.05.2016 19:49 # 0
inkanus-gray 04.05.2016 19:58 # +2
guesto 02.05.2016 21:34 # +4
2. C# конечно же на голову круче Джавы по выразительности: там есть куча всего: от async до вывода типов. От Linq до Dynamic. А в Джаву даже сраные лямбды с кложами только вчера завезли, а генериков в рантайме и вовсе нет.
3. Никакого анализа кода не нужно, в дотнете можно сразу же скомпилироваться из CLR в нативный код, причем под конкретный процессор (см ngen)
Аргумент про про "склонированное" вообще прекрасен! Что там склонировано? Идея виртуальной машины? Идея ГЦ?
Все современные ОС, в таком случае, склонированы с OS360.
Ты напоминаешь мне пубертатного кулхацкора, который в журнале "хакер" прочитал что "виндуос это не круто" и теперь обливает говном любой МС продукт просто потому, что это МС
j123123 04.05.2016 05:28 # +2
Учитывается ли, что есть разные варианты машин с разными опкодами, например Dalvik и Java Card? И как вообще можно судить о крутизне VM только лишь по опкодам? Может надо сравнивать получившийся машинный код, оптимизации например? Или скажем кроссплатформенность? C# научились уже в сим карты засовывать? Какие конкретно среды выполнения Java и С# кода сравнивать? Mono с Dalvik? Или может .NET c HotSpot?
>2. C# конечно же на голову круче Джавы по выразительности
По-моему они оба говно. Сама идея городить какие-то там виртуалки с обязательным контролем границ массива в рантайме и сборкой мусора - говно. Мне вообще не интересен холивар Java VS C# т.к. на мой взгляд оба они говно. Вот насчет C vs C++, C vs Java, C vs C#, ASM vs C - это сколько угодно
>там есть куча всего: от async до вывода типов. От Linq до Dynamic.
Для подобной херни пусть Scala используют http://scalaquery.org/doc/ScalaDays2012-SLICK.pdf
>3. Никакого анализа кода не нужно, в дотнете можно сразу же скомпилироваться из CLR в нативный код, причем под конкретный процессор (см ngen)
Для жабы это тоже есть, JRockit и ART (Android RunTime). И хуй знает что из этого лучше (AoT или всякое профилирование и динамическая компиляция как в HotSpot). В том же GCC и MSVC для Си и плюсов есть PGO например, но есть еще некоторые вещи, которые ни то ни другое не поддерживает, например суперкомпиляция, впервые примененная в языке РЕФАЛ и которую хотят реализовать в JVM.
Кстати, для жабы намного больше есть этих виртуальных сред выполнения, чем для дотнетов (официальный .NET от M$ и Mono, создателя которого они не так давно перекупили к себе; был еще какой-то dotgnu но он похоже сдох), т.е. все актуальные реализации CLR находятся под контролем одной корпорации. Не могу сказать что это хорошо.
kerman 04.05.2016 08:48 # −1
>По-моему они оба говно.
Сам ты говно. Это языки высокого уровня. Их задача - максимально сократить количество выстрелов в ногу и сконцентрировать программиста на задаче. И простой OutOfRangeException вместо UB, когда компилятор может сжечь твой дом и убить твою собаку - это просто счастье.
Разработка одного и того же на c# будет в разы быстрее, чем на крестах, если не так критично быстродействие. А быстродействие в 99% не критично, ибо не семидесятые годы и даже на самых старых компах минимум два ядра по гигагерцу и гиг оперативки.
j123123 04.05.2016 19:36 # 0
Чтобы избежать UB от выходов за пределы массива можно использовать херню вроде смартпоинтеров которые тебе будут проверять границу. Еще этот Rust, в нем можно через RAII без GC и явных освобождений памяти обходиться.
>Разработка одного и того же на c# будет в разы быстрее, чем на крестах, если не так критично быстродействие. А быстродействие в 99% не критично
Откуда вы эти 99% вообще берете? С потолка? Методику подсчета - в студию
3_14dar 04.05.2016 19:52 # 0
j123123 04.05.2016 19:59 # 0
3_14dar 05.05.2016 02:54 # +1
kerman 04.05.2016 21:17 # 0
С потолка, конечно. Я что, ебанутый искать реальные цифры в интернете? Методику-хуёдику ему подавай. Всё исключительно интуитивно и на собственном опыте.
Подумай, сколько процентов кода в мире пишется для ынтырпрайза и прочей некритичной хуйни. Я думаю, около 90%. А потом, прикинь, сколько процентов от каждого проекта критично к быстродействию. Меньше 90% никак не получится, ибо узкие места, как правило, маленькие. А логики много.
А теперь вот о чём нужно подумать. Стоит ли оверхед усилий на неуправляемый язык той прибавки производительности, который он даёт? Основная оптимизация - алгоритмическая, она может дать 1000% производительности или больше, в то время, как прибавка от использования крестов, раста и сей ну в два, ну в три раза больше может дать (в особо запущенных случаях). Ассемблер ваще даже не рассматриваю, в современной архитектуре x86-64 нереально написать код лучше компилятора ибо очень сложно.
kegdan 04.05.2016 21:25 # 0
kerman 04.05.2016 21:34 # 0
kegdan 04.05.2016 21:37 # 0
defecate-plusplus 04.05.2016 21:42 # −1
emacs и дырявый вонючий носок
дырявый вонючий носок и emacs
и...
пожалуй, всё же emacs
kerman 04.05.2016 22:16 # 0
guesto 04.05.2016 21:21 # 0
Это примерно как говорить про паттерны с ПХПшником
3_14dar 04.05.2016 21:27 # 0
Это разве не признаки высокого уровня?
>типизация и в рантайме
Не в жаве.
kerman 04.05.2016 21:35 # 0
>Не в жаве.
Есть там типизация в рантайме. С дженериками, да, плохо. Впрочем, они сказали, что это Type Erasure и вроде как фича, а не баг.
guesto 05.05.2016 15:04 # 0
всем было бы лучше, если бы генерики были в рантайме
но увы
guesto 04.05.2016 21:38 # 0
нет. В JavaScript может не быть рефлексии, а в Swift -- gc)
>>Не в жаве.
именно что в джаве. Попробуй скастить строку к объекту
kegdan 04.05.2016 21:44 # 0
разве
типизация и в рантайме != динамическая типизация? неправ: прав;
defecate-plusplus 04.05.2016 21:47 # 0
3_14dar 04.05.2016 21:48 # 0
Што?
3_14dar 04.05.2016 21:46 # 0
http://ideone.com/XmQJsn
>C# и жаба это не просто высокий уровень, это еще и ГЦ и рефлексия и типизация и в рантайме и статическая и много чего другого.
Ну всерхвысоким уровень не становится от этого.
guesto 05.05.2016 13:23 # 0
а теперь скасти объект в строку и получи exception
потому что джаве в рантайме есть инфа о типах
это и называется дин. типизацией
например в сях или ObjC ее нет, ты можешь скастить случайное число в указатель на структуру и сидеть так до Faultа (а в реальном режиме до перезабирания ДОСа или перезагрузки компутера)
roman-kashitsyn 05.05.2016 14:43 # 0
Да не будет exception, формулируйте мысли правильно.
Серия кастов Integer -> Object -> String приведёт к исключению ClassCastException.
Если в жабе работает явный каст B -> A, то и явный каст A -> B на том же объекте всегда будет работать.
guesto 05.05.2016 15:03 # 0
>>приведёт к исключению ClassCastException.
так будет или нет?)
roman-kashitsyn 06.05.2016 09:08 # 0
От каста String -> Object -> String не будет, ибо с чего бы.
От каста Integer -> Object -> String будет, ибо нефиг.
kegdan 04.05.2016 22:00 # 0
сколько строку в объект не касть, она все равно строка
1024-- 04.05.2016 22:07 # 0
динамический питух и в жабе кукарекает
guesto 05.05.2016 13:22 # 0
потому что в рантайме есть знание о типе
j123123 16.05.2016 22:36 # −1
>рефлексия
Вот в ассемблере с рефлексией вообще заебись, можно делать самомодифицирующийся код. А встроенный и неотключаемый GC на уровне рантайма это однозначное говно.
guesto 16.05.2016 23:00 # 0
2. рефлексия не имеет никакого отношения как самоодифицируемому коду.
3. говно это когда ты пытаешься рассуждать о том, в чем ничего не понимешь
j123123 16.05.2016 23:12 # +1
Можно. Вчера я такой код запускал как раз.
>2. рефлексия не имеет никакого отношения как самоодифицируемому коду.
System.Reflection.Emit и MethodBase.GetMethodBody это что по-вашему?
>3. говно это когда ты пытаешься рассуждать о том, в чем ничего не понимешь
Я отлично все понимаю.
guesto 16.05.2016 23:22 # 0
2. Это только маленькая часть рефлексии. Обычно ее используют для получения информации о типе (например для работы с атрибутами) и для создания типов по имени.
3. Ты не понимаешь зачем рефлексия. Ты не понимаешь зачем GC. Видно что ты ничего не писал на .NET, и несешь тут всякую чушь.
bormand 16.05.2016 23:25 # 0
Снимаешь трусы защиту и бежишь модифицировать... Все JIT'ы так и работают.
guesto 16.05.2016 23:29 # 0
j123123 16.05.2016 23:56 # 0
В жабаскрипте я могу взять строку, менять ее в рантайме и потом eval-ить. Вот вам и самомодифицирующийся код, притом с JIT-ом
guesto 16.05.2016 23:57 # 0
guesto 16.05.2016 23:37 # 0
Так вот кеш этот идет на смарку при самомод..коде
это проеб по перформансу
j123123 16.05.2016 23:49 # 0
j123123 16.05.2016 23:39 # 0
https://paste.debian.net/685804/ - отлично работает в линуксах, если объявить свою секцию с "axw"
>2. Это только маленькая часть рефлексии. Обычно ее используют для получения информации о типе (например для работы с атрибутами)
А на кой хер вообще получать информацию о типе в рантайме, если через Хиндли-Милнера все можно вывести еще на этапе типизации?
>и для создания типов по имени.
Ну это как в фортране типа, http://www.lib.ru/ANEKDOTY/non_pas.txt
Хуже всего с этими хитрыми типами данных то, что вы должны их описывать, а настоящие языки программирования, как мы все знаем, обладают возможностью неявного задания типа, основанного на первой букве 6-символьного имени переменной.
Или мы через рефлекшены говорим в компилтайме "а сделай-ка мне вот тип точно такой же, как вон тот" ?
В любом случае это говно. Чтобы в полную силу все это задействовать, надо работать на уровне AST и с макросами как в лиспе с гомоиконностью, а херня из сишарпа просто убогий огрызок от тех возможностей.
guesto 16.05.2016 23:51 # 0
>> типизации?
Нельзя, если ты загружаешь внешний объект, например.
>>надо работать на уровне AST
Совершенно ни причем тут AST.
Рефлексия позволяет сделать AOP, позволяет расставить пермишены на уровне метода, и много чего другого
j123123 17.05.2016 00:35 # 0
Почитай еще про то, что такое гомоиконность
bormand 16.05.2016 23:55 # +1
*facepalm.jpg*
j123123 16.05.2016 23:57 # 0
guesto 16.05.2016 23:59 # 0
Ты понимаешь масштаб каши в голове, да?
"Существует вывод типов, потому рефлексия не нужна". Блядь! Это вореция со мною говорит
j123123 17.05.2016 00:01 # 0
j123123 17.05.2016 00:07 # 0
И это еще можно использовать как для контрактного программирования.
А если еще вспомнить концепцию суперкомпиляции, которую придумал автор Рефала, т.е. если из самого кода можно было б вывести, что в такую-то функцию не будут передаваться числа, большие чем x, то на основе этого можно было б хуйнуть специализацию функции. Но в ебучем сишарпе хуй знает вообще какое говно из какого блядского модуля подключится к программе, и хуй там такое применишь
j123123 16.05.2016 23:39 # 0
Рефлексия это когда программа может залазить в свой собственный код(MSIL или машинный код или в еще какое-нибудь AST говнопредставление) и что-то осмысленное с ним делать. Можно на основе одного кода делать новый код, можно куски кода каким-то образом совмещать, опять таки можно получать информацию о типе, делать какбы-JIT. Это уже дело десятое
А GC это такая херня которая нужна чтобы ручками не дергать malloc-free или другой механизм аллокации(например чтобы не писать кастомных аллокаторов, например пуловых, стековых и проч.), других полезных фич у него нет. Там производится куча каких-то дебильных действий, вроде поиска циклических ссылок, разбрасывания аллокаций на разные поколения, например там есть такое правило, что самое молодое поколение с наибольшей вероятностью скоро надо будет убирать, это все чтоб снизить время цикла сборки мусора. Всю эту херню я в свое время читал, и это говно.
guesto 16.05.2016 23:49 # 0
Ну вот, я же говорю: ты не понимаешь. Рефлексия используется УДАЧНО для получения атрибутов в рантайме, поиска по ним методов и вызова оных. Это то, что без рефлексии сделать нельзя, если не вшиваться литералом.
>> чтобы ручками не дергать malloc-free
Сразу видно что в достаточно крупном проекте ты не работал. Никто практически уже не делает в огромных бизнес-системах malloc-free руками. Используется или GC или Reference Counting. RC тоже не плох, но он не отлавливает islands of isolation, а GC отлавливает.
Это достаточно сильно экономит время и делает код безопаснее
subaru 14.05.2018 23:12 # 0
И неявные ссылки с дипкопи только через анус. Как вы вообще программируете на этом? И в питоне, и в го плююсь с этого дрянья, один геморрой и никакого профита.
Alexander 14.05.2018 23:20 # −1
TarasB 05.05.2016 11:59 # 0
А в крестах ассерт. Ну, у нормальных людей. Долбоёбов с int* massiv = new int[N] не берём в расчёт.
kerman 05.05.2016 20:05 # 0
В шарпожабе проверка включена по умолчанию. В крестах её нет. Нужна - напиши ручками... Вот здесь, здесь и вот здесь. Да и вот здесь. Нигде не забыл? Ну ладно, поехали... Блядь! Где-то всё равно забыл.
3_14dar 06.05.2016 04:45 # 0
kerman 06.05.2016 09:22 # 0
3_14dar 06.05.2016 19:17 # 0
defecate-plusplus 06.05.2016 10:11 # +2
как ты используешь массив, что тебе нужны эти проверки при каждом обращении?
просто зачем вообще людям массив? где путем локальности и четко понятной последовательности элементов достигается максимальное машинное быстродействие
в этом случае они прекрасно понимают, как с ним работать, не собираются из сети принимать индекс элемента и лезть по нему без проверки
в с++ охулиард более других коллекций, где хоть обмажься проверками на наличие элемента, заодно они более пригодны к вставке в середину и другим мутациям
roman-kashitsyn 06.05.2016 11:44 # 0
Допустим, Вася разрабатывает сервис, позволяющий запускать произвольный код, написанный другими разработчиками. Например, он пишет инфраструктуру плюсового HTTP-бэкенда, но не отвечает за код обработки запросов.
В управляемом языке можно просто перехватывать в инфраструктуре все исключения и генерить 500 ошибку. В C++ весь инфраструктурный процесс может слечь из-за кривого обращения к памяти / утечек.
Единственный способ избежать проблем - запускать обработчики в отдельных процессах и платить за копирование данных по IPC, т.е. fastcgi/nginx.
Честно говоря, монолитные управляемые приложения всё равно за nginx обычно сидят, но не для всех инфраструктурных вещей есть подобные стандарты де-факто.
defecate-plusplus 06.05.2016 12:01 # +3
у меня вопрос непосредственно про массив в крестах
сука как можно взять такой тупейший контейнер, который занимает минимум места и для которого взятие элемента по индексу O(1), который обычно требуется для того, чтобы засунуть в молотилку, конвейерно отработающую все элементы за 1 проход или даже массивно-параллельно, и сука повесить проверку границ на каждую попытку обращения к каждому его элементу?
ЗОТО БИЗОПАСНО!
kerman 06.05.2016 12:37 # +1
1024-- 06.05.2016 12:48 # +1
Если программа кривая, то не важно, это будет аккуратное исключение как в Java или неясное падение, для пользователя программа и там, и там упала.
roman-kashitsyn 06.05.2016 12:54 # +1
Отличие в том, уронит ли эта программа до кучи ещё и "программы" десятка соседних пользователей.
Впрочем, управляемые языки в этом плане тоже говно - в них нет нормальных механизмов управления ресурсами, отличными от памяти. Если кривой обработчик нещадно течёт файловыми дескрипторами, контейнер тоже недолжно проживёт.
defecate-plusplus 06.05.2016 13:01 # 0
тем более, что он всё равно тормозит, одной проверкой больше, одной меньше - никто разницы не увидит
guesto 06.05.2016 13:03 # 0
ок, си для тупых, я понимаю
си тормозит!
roman-kashitsyn 06.05.2016 12:47 # +3
Массив - это опупенно нужная и вездесущая структура данных, поверх которой можно запилить кучу ништяков вроде
бинарной кучи, дерева Фэнквика или дерева сегментов. Я уже забыл, сколько раз я отлаживал индексы в сегментном дереве. Больше, наверное, только во всевозможных двоичных поисках.
guesto 06.05.2016 12:49 # +5
defecate-plusplus 06.05.2016 12:55 # 0
тебе дали прекрасный золотой дробовик, переопределяй [], используй at в векторе, не используй массив
зачем навязывать всем ухудшение производительности?
guesto 06.05.2016 12:49 # 0
3_14dar 06.05.2016 19:18 # 0
3_14dar 04.05.2016 17:38 # 0
>Для подобной херни пусть Scala используют http://scalaquery.org/doc/ScalaDays2012-SLICK.pd
Ты охуел? Ты эту скалу вообще видел? Ради линка изучать дубовый ФЯ?
Есть еще xamarin, который как-то компилирует c# то ли в жава код, то ли в байткод.
А для жавы интерпретатор кто-то кроме оракла реально пилит?
j123123 04.05.2016 19:14 # 0
Scala - язык мультипарадигменный, с циклами и нормальными изменяемыми(мутабельными) переменными/массивами(объектами), а не какой-то там хачкель с монадками. Да и почему только ради LINQ? Там много другой хуиты есть, макросы например
>Есть еще xamarin, который как-то компилирует c# то ли в жава код, то ли в байткод.
Там оно скорее всего сразу в машинный код компилирует.
>А для жавы интерпретатор кто-то кроме оракла реально пилит?
Гугл для андроидов точно что-то пилил, даже со своим байткодом, есть еще Jikes RVM и какая-то Java от IBM которую они пускают на своих System z (хер знает что там у них используется, может и есть куски кода от Sun/Oracle)
3_14dar 04.05.2016 19:54 # 0
>Гугл для андроидов точно что-то пилил
Все равно, одна система - один интерпретатор.
>Там оно скорее всего сразу в машинный код компилирует.
В нативный что ли? Не в байткод?
j123123 04.05.2016 20:08 # 0
Видел код на скале - нихера особо сложного не заметил там.
>В нативный что ли? Не в байткод?
On iOS, Xamarin’s Ahead-of-Time ( AOT) Compiler compiles Xamarin.iOS applications directly to native ARM assembly code. On Android, Xamarin’s compiler compiles down to Intermediate Language ( IL), which is then Just-in-Time ( JIT) compiled to native assembly when the application launches.
3_14dar 04.05.2016 20:41 # 0
>Видел код на скале - нихера особо сложного не заметил там.
Поизучай его дольше 5 минут.
j123123 04.05.2016 20:45 # 0
Ну раз там есть JavaScript в браузере, VM по-любому должна быть!
3_14dar 04.05.2016 20:47 # 0
Кстати, запрет на автогенерацию objc кода из другого кода уже убрали?
j123123 04.05.2016 21:01 # 0
Надо просто скомпилировать C# в JavaScript
>Кстати, запрет на автогенерацию objc кода из другого кода уже убрали?
А что, у них там был такой запрет? Какое им вообще дело до того, каким образом был получен код на obj-c?
3_14dar 04.05.2016 21:05 # 0
>Когда я начинал, все ненативные средства разработки были запрещены Apple. Тоже был не в большом восторге от Objective-C.
11-й год. Ну значит, вычитал это в каком-то очень древнем журнале :)
guesto 04.05.2016 21:15 # 0
AppCode тогда как работает?
chtulhu 05.05.2016 05:24 # 0
через жопу и Xcode
Но даже при этом AppCode намного удобнее
guesto 06.05.2016 00:20 # 0
Но вообще XCode страшно глючен конечно, и там много ебанаго стыда. Один хак с cocoa pods чего стоит. Почему XCode не умеет этого нативно?
А еще там отвратный парсер, который ломается на первой незакрытой скобке, убогий рефакторинг (примерно один, да и тот не работает), но зато там есть xcodebuild, а у Intellij такой штуки нет ни в одном продукте! (не считая андроид студио с graddle)
defecate-plusplus 06.05.2016 08:03 # 0
что это? если я правильно понял что это - нахуй jetbrains писать замену мавену или гульпу?
chtulhu 06.05.2016 11:45 # 0
это консольная хрень для сборки проектов XCode. И это скорее похоже на cmake, нежелин а мавен.
defecate-plusplus 06.05.2016 12:07 # 0
внешний инструмент, которому не нужна ide, собирает (минифицирует, чистит, деплоит etc) твой проект, делает это заебись, при этом отлично интегрируется в ide если надо - какие такие охуительные вещи умеет эта похожая на cmake хрень, что мы все дружно согласимся, что Apple 1:0 гетеросексуализм?
guesto 06.05.2016 12:34 # 0
а дублировать настройки в проекте и в IDE как-то глупо.
Хорошо интегрируется только graddle, потому что в Android Studio через него все настройки и делаются.
Вообще конечно еьаный стыд: у .NET есть msbuild, у xcode есть xcodebuild, и только у Intellij ничего нету.
Надеюсь, всем очевидно зачем нужно уметь с консоли собирать проект и запускать тесты? Про CI все в курсе?
defecate-plusplus 06.05.2016 13:00 # 0
у меня в отделе иначе, чем мавеном, и не собираются жавопроекты, все это делают тыкая мышкой на предопределенных 1 раз тасках в ide, ну или открывая console если кому удобно
guesto 06.05.2016 13:01 # 0
а еще тебе нужно запускать тесты в IDE
ты как это делаешь? сначала описываешь в pom.xml, а потом настраиваешь IDE чтобы IDE знало что вот src, а потом создаешь в IDE ран конфигурацию для тестов?
defecate-plusplus 06.05.2016 13:16 # 0
те тесты, которые запускают тут, в отделе, запускаются мавеном
а до автотестирования фронта через какие-нибудь селениум нам как до китая раком, никто и не пробовал
я лишь сужу о том, о чем ноют разработчики
например, они могут поныть о том, что 16 рам мало для идеи, всем пробил 32, могут поныть что 2 монитора лучше 1, и 1200 по вертикали лучше 1080 - ну ок
о плохой интеграции мавена или гульпа в идею никто не ныл, да и смысл - особо упоротые при желании могут хоть в нетбинсе писать, всё взлетит, поэтом хранить какие-то существенные настройки проекта в идее странно
roman-kashitsyn 06.05.2016 14:26 # 0
Вообще-то идея отлично понимает pom.xml, и, разумеется, подхватывает и обновляет source-каталоги и таргеты.
Более того, до недавнего времени интеграция с maven была на порядок стабильнее и полнее, чем с Gradle. Ну и до сих пор мавен-интеграция на порядки быстрее и отзывчивее gradle-интеграции, которая тормозит как говно даже на топовых машинах.
guesto 06.05.2016 15:20 # 0
Во-вторых сама по себе интеграция тоже довольно глючная.
roman-kashitsyn 06.05.2016 15:24 # 0
С градлом это не так?
> Во-вторых сама по себе интеграция тоже довольно глючная.
В чём именно?
guesto 06.05.2016 15:34 # 0
ЕМНИП нет. Идея сама считывает настройки в рантайме. Добавил папку сырцов, и она сразу "посинела".
Но даже если она и синхронизирует это "в фоне", то (еще раз говорю) в msbuild и xcodebuild этих проблем лишены.
>>В чём именно?
попробуй описать тесты в мавене, а потом запустить конкретный тест
Для этого есть отдельный плагин версии 0.0.19
https://plugins.jetbrains.com/plugin/7446
Можете себе представить качество его работы;)
Другой пример: Idea позволяет сделать томкат или джетти конфигурацию и запускать ее.
И в мавене можно сделать. Но синхронизации тут никакой нет.
И там и там надо делать ручками.
defecate-plusplus 06.05.2016 15:55 # 0
> msbuild и xcodebuild этих проблем лишены.
дай угадаю, потому что они работают с файлом проекта конкретной ide?
ты предлагаешь жидбрейнсу всему ынтерпрайзному миру навязать свои форматы файлов проектов? что делать тем, кому мил нетбинс или кому нравится эклипс?
писать адаптер к sln и proj файлам, как это вынуждены делать жалкие конкуренты ide под винду и макось?
> И там и там надо делать ручками.
даже мне понятно, что томкат у каждого разраба свой, даже версии могут быть разными, а на тестовом и прод сервере свои конфигурации, зачем это вообще тащить через идею и мавен?
guest 07.05.2016 22:45 # 0
именно так
потому там не бывает так, что локально все работает, а на CI ёбнулось
а в Intellij сплошь и рядом такое
wvxvw 08.05.2016 10:59 # 0
Что да происходит: проекты в МСВС обычно тривиальные, а задачи автоматизации перекладываются на что-то другое. Что вобщем-то и правильно, т.как МСБилд - очень ограниченый и не подходит для автоматизации. С одной стороны программистам легче компилировать свой код, а с другой - если им нужно работать с готовым продуктом, тестами или какими-то другими аспектами инфраструктуры, то тут они проиграют.
roman-kashitsyn 06.05.2016 15:57 # 0
С мавеном аналогично.
> И в мавене можно сделать. Но синхронизации тут никакой нет.
В идее можно запускать произвольный мавеновский таргет. Не нужно ничего дублировать.
guest 07.05.2016 22:43 # 0
произвольный таргет для тестов не нарисует слева деревце
произвольный таргет для тмоката не будет иметь кнопку "перезапустить"
итд
roman-kashitsyn 06.05.2016 14:32 # 0
chtulhu 06.05.2016 16:30 # 0
да нет никаких профитов. Просто яббл анально огорожен и все остальное либо вызовет еще большую боль
guesto 04.05.2016 21:02 # +1
строго говорят не совсем так
сначала он идет в llvm, затем в нативный код под ARM (в случае девайсов) или под x86 (в случае эмулятора)
Но пользователю этого не заметно
3_14dar 04.05.2016 21:03 # 0
guesto 04.05.2016 21:04 # 0
j123123 04.05.2016 20:11 # 0
3_14dar 04.05.2016 22:12 # 0
j123123 04.05.2016 05:28 # +3
Дело в том, что M$ создали свою жабу(реализацию JVM (MSJVM) ), но Sun (светлая ему память) засудил их.
http://i72.narod.ru/humor/revolution.htm
Сейчас идея и там и там в некоей единой среде, в рамках которой поддерживается куча языков. Например в дотнетах это C# F# VB.Net C++/CLI и что там у них еще за херня, у JVM есть Java Scala Kotlin Groovy Ceylon... и там и там из одного языка можно использовать методы/функции другого. Другие "среды" не такие многоязычные. Вот например есть JavaScript и какой-нибудь Erlang, и тебе надо из ерланка дергать какую-то жабаскриптохуйню и наоборот, а работают они в разных виртуальных средах, и все это будет добавлять тормозов, если надо пересылать какие-то массивы байтов из одного рантайма в другой, какие-то SHM костыли городить, или пропихивать байтики через именованные каналы, Unix domain socket и так далее. А если у тебя жаба или дотнет хуйня есть, там все говноязычки варятся в одном котле, и они меж собой может легко коммуницировать без всяких ебаных костылей.
Кроме того, вспомните этот Windows Phone. M$ видимо посмотрела на эти андроиды с жабой и задумалась: так ведь у меня тоже своя жаба есть - дотнет. Сделаю-ка я телефоны с дотнетами, вот заебись будет. Только хуй там.
>Все современные ОС, в таком случае, склонированы с OS360.
Если современная ОС это значит "ОС, использующая концепции, заложенные в OS360" то вполне.
>Ты напоминаешь мне пубертатного кулхацкора, который в журнале "хакер" прочитал что "виндуос это не круто" и теперь обливает говном любой МС продукт просто потому, что это МС
Заshitников майкрософта я тоже много наслушался, уж поверь мне. Есть за что обливать.
j123123 04.05.2016 05:40 # +1
К слову сказать, эта идея тоже говно по своей сути. Например, строить функциональщину поверх "среды" которая изначально заточена на всякие сишарпы и прочую хуиту с сайд эффектами - весьма сложно оказалось. Так что лучше уж затачивать среду исполнения под конкретный язык программирования, чем пытаться охватить все
http://fprog.ru/2010/issue6/interview-simon-peyton-jones/
— Говоря о практическом применении исследований, связанных с Haskell, как Вы можете прокомментировать неудачную, в конечном итоге, попытку внедрения Software Transactional Memory в C#?
Саймон: Я не участвовал в принятии решения о невнедрении. В моём понимании, рантайм .NET — большой и сложный зверь. Чтобы добавить транзакционную память, они пытались решить задачи гораздо сложнее тех, с которыми столкнулись мы в Haskell STM, где побочные эффекты являются не правилом, а исключением. Они работали с рантаймом, для которого побочные эффекты не являются исключением. И поскольку побочные эффекты должны отслеживаться системой транзакционной памяти и такое отслеживание является дорогой операцией, их исходная позиция была менее выгодна. Они собирались внедрить и многие другие сложные сущности, такие как открытые вложенные транзакции, а также модификацию адресов памяти как внутри транзакции, так и снаружи. В Haskell STM переменные делятся на два класса. Переменные класса TVar могут быть изменены внутри транзакции, но не снаружи. Переменные класса IORef могут изменяться снаружи, но не внутри.
guesto 04.05.2016 20:12 # +1
олол, ты не поверишь но ISA любого CPU а так же любая VM (llvm, jvm, clr) строится именно на таких принципах
под x86 ты можешь писать на С а можешь на паскале
и вызывать функции, написанные на другом языке
правда же x86 говно?
j123123 04.05.2016 20:33 # 0
Не любого
https://en.wikipedia.org/wiki/Dataflow_architecture
https://habrahabr.ru/post/122479/
Вот например есть процессор Мультиклет на который этот LLVM плохо ложиться.
https://habrahabr.ru/post/209732/#comment_8710245
>а так же любая VM
Не любая
>x86 говно
Да, говно
guesto 04.05.2016 20:35 # 0
x86 говно и .NET говно потому, что позволяет писать под себя на разных ЯП.
Вопросов больше нет
j123123 04.05.2016 20:55 # 0
Нет, понял ты неправильно. Одни среды заточены под одну парадигму, другие под другую. Например, вышеупомянутая dataflow architecture(есть аппаратные реализации) лучше ложится на функциональную парадигму, чем на всякую императивщину.
Еще раз процитирую, может быть до тебя дойдет:
В моём понимании, рантайм .NET — большой и сложный зверь. Чтобы добавить транзакционную память, они пытались решить задачи гораздо сложнее тех, с которыми столкнулись мы в Haskell STM, где побочные эффекты являются не правилом, а исключением. Они работали с рантаймом, для которого побочные эффекты не являются исключением. И поскольку побочные эффекты должны отслеживаться системой транзакционной памяти и такое отслеживание является дорогой операцией, их исходная позиция была менее выгодна.
У хачкеля есть свой рантайм, отличный от рантайма .NET, в нем есть свои особые механизмы и сборщик мусора, конкретно заточенные под эту функциональную парадигму, абстрагируясь таким образом от императивного ассемблера x86. А если б был некий процессор, который специально спроектирован для поддержки функциональщины, с какой-нибудь встроенной на аппаратном уровне сборкой мусора и этими dataflow, хачкель работал бы на нем эффективнее. Хачкель можно при желании и в брейнфак скомпилировать, но работать это будет через одно место и с тормозами
3_14dar 04.05.2016 17:42 # 0
Хуй из-за венды на телефоне. C# живет на андроиде в виде ксамарина.
guesto 04.05.2016 20:11 # 0
и дальше что ? причем тут .NET?
>>Сейчас идея и там
зачем вот эта вся шизофазия дальше?
>>"ОС, использующая концепции, заложенные в OS360" то вполне.
таком образом все ОС говно, ок
>>Заshitников майкрософта
MS есть за что критиковать, но ты не назвал ни одного аргумента кроме невнятного блекотания про "клоны".
j123123 04.05.2016 20:42 # +2
Ну они попробовали к Java применить свой прием embrace, extend and extinguish, только их обломали, и они решили сделать свою Java, только лучше. Получился .NET
>зачем вот эта вся шизофазия дальше?
Это и есть общая идея
>таком образом все ОС говно, ок
Нет. Скорее уж говно это твои представления о том, что считать современной ОС
>MS есть за что критиковать, но ты не назвал ни одного аргумента кроме невнятного блекотания про "клоны".
А ты вот думаешь что я тут поставил себе цель максимально раскритиковать M$? Или ты отрицаешь, что .NET задумывался именно как конкурент Java, когда Sun обломал их с этим Visual J++?
guesto 04.05.2016 21:01 # 0
И что дальше? Это типа минус дотнета такой?
А Linux клон UNIX, и потому тоже говно?
>>А ты вот думаешь что я тут поставил себе цель максимально раскритиковать M$?
нет, я думаю что ты ничерта не разбираешься ни в .NET ни в C#, и что ты не смог пока привести ни одного аргумента кроме того что "это майкрософт, их обламали с джавой и они сделали C#".
j123123 04.05.2016 21:55 # +1
Нет, минус заключается не в этом. Где вообще ты нашел утверждение "если клон то говно"?
>А Linux клон UNIX, и потому тоже говно?
У UNIX хватает недостатков и Linux все эти недостатки наследует. Говно там есть несомненно
>ни одного аргумента кроме того что "это майкрософт, их обламали с джавой и они сделали C#".
Я тебе приводил аргументы, только ты и предпочел игнорировать. Отсутствие динамической компиляции и профилизование как в HotSpot. .NET нихрена не кроссплатформенный, в отличии от Java, которую (J2ME) до сих пор пихают в телефоны(не смартфоны), мидлеты всякие. Java Card может даже выполняться в SIM картах, ничерта такого про сишарп я не слышал. Вообще, основная проблема дотнета лично для меня в том, что это все заточено под винду.
Могу еще:
Отсутствие в Mono херни, связанной с WPF а также привязка этого WPF к DirectX которого нигде нет кроме как в винде(в вайне какая-то костыльная багнутая эмуляция, это не в счет) http://www.mono-project.com/docs/about-mono/compatibility/ - вот более подробно о неполной совместимости. Winforms в mono тоже багнутый.
Если говорить про винду, то: необходимость держать дохера версий .NET framework в винде, если часть софта хочет один дотнет, другая часть - другой (ну т.е. им насрать на обратную совместимость. Вот лучше поставьте побольше версий дотнетов, хули там, гигом меньше гигом больше, не в 70 же живем). Сам дотнет отжирает дохрена памяти, и дохрена места на жестком диске(хотя это же касается и жабы, но мне почему-то не надо кучу разных версий Java ставить, а для дотнета надо), программы под Java и .NET обычно работают медленней и требуют больше памяти, чем С/С++/Objective-C etc. Проблемы с реалтаймовостью у всех этих языков с GC, отчего даже придумали специальные GC для Java чтобы в реальном времени кое-как работало(интересно, есть ли такое для .NET). А, ну и еще потеря производительности из-за проверки границ массивов(хотя там есть всякие unsafe но ими обычно не пользуются)
3_14dar 04.05.2016 22:10 # 0
Один недостаток, хотя есть уже указанные моно и ксамарин.
J2Me формально может и жава, а фактически - сильно порезанное подмножество, про Java Card вообще молчу, блядь, там от жавы одно название, гц нет. Что сложнее - изучить язык похожий на тот который знаешь, или изучить с нуля стек библиотек?
Неполная эмуляция дотнета в моно (на самом деле - почти все кроме гуя).
Дальше?
>необходимость держать дохера версий .NET framework в винде
Тебя что смущает? 100-200 метров места? Гигом? Хуй тебе, я оффлайновые инсталляторы качал. У тебя SSD на 32 гига, что ты шипишь-то? В семерве фреймверки прилетают вообще с апдейтами.
>программы под Java и .NET обычно работают медленней и требуют больше памяти, чем С/С++/Objective-C etc.
И отзывчивость меньше, и стартуют дольше. Но вся эта радость до первого сегфолта.
Реальные недостатки будут еще?
kegdan 04.05.2016 22:26 # +1
kerman 04.05.2016 23:06 # +1
kegdan 04.05.2016 23:07 # 0
У него кишки на плюсах написаны, так-то
kerman 04.05.2016 23:18 # 0
kegdan 04.05.2016 23:31 # 0
о чем я, блеать, и говорю!
wvxvw 05.05.2016 00:37 # +2
Компиляторы Явы - написаны на Яве (Oracl, OpenJDK, IBM, Google) и на Си (jcc - которым никто не пользуется).
Компиляторы JVM языков: Groovy - смесь Java + Groovy, Scala - Scala, Clojure - Java.
Разные Лиспы: как правило на Лиспе (SBCL, CCL, Allegro, Racket) + минимальный бустрап на Си.
Прологи: SWI - Пролог + минимальный бустрап на Си. Mercury - Mercury.
Компилятор Haskell, OCaml, Rust, Go, Pascal, Ada написаны на Haskell (оба), OCaml (с десяток), Rust, Go (один из двух, оффициальный), Pascal (все, на сколько мне известно), Ada.
Недавно видел объявление по найму: искали программистя писать компилятор Сиквела на Хаскеле.
Есть еще курьезные ситуации. Например, компилятор ActionScript написан на Яве. Компилятор HaXe написан на OCaml. Есть PyPy (компилятор Питона на Питоне). TypeScript - JavaScript, CoffeeScript - CoffeeScript.
Большинство существующих компиляторов написаны не на Си / С++.
1024-- 05.05.2016 01:56 # 0
Кстати, сейчас есть возможность честно скомпилировать компилятор таких языков?
Скажем, рассматриваю язык X с компилятором на X, нахожу нормальную версию исходников компилятора на каком-то другом языке Y (причём Y не зависит от X), чей компилятор у меня запустится (т.е. актуален, а не написан в стародавние времена под железо авторов C; ну или хотя бы на какой-нибудь реально существующей машине запустится), компилирую нормальную версию компилятора X, потом ей компилирую "циклическую" версию компилятора X.
wvxvw 05.05.2016 08:58 # +1
ЗЫ. Си / С++ вообще малопригодны для написания компиляторов. Код компиляторов "написаных на Си / С++" как правило не написан на Си / С++, а на чем-то типа YACC. Си, выбриается в качестве целевого языка YACC как правило в виду распространенности, а не потому что он как-то лучше приспособлен для таких задач.
kegdan 05.05.2016 09:04 # 0
Логично, что YACC, BISON и всякие COCO\r имеют место быть, ибо писать весь этот код самому нудно, долго и, что самое важное, черевато ошибками
wvxvw 05.05.2016 09:19 # 0
guesto 05.05.2016 13:31 # 0
Это примерно 5% того, из чего состоит компилятор
и дело тут не в си: ты думаешь что на джаве парсер с нуля руками написан?
defecate-plusplus 05.05.2016 13:42 # 0
guesto 05.05.2016 13:51 # 0
CHayT 05.05.2016 14:28 # +6
kerman 05.05.2016 02:32 # 0
3_14dar 05.05.2016 02:47 # 0
3_14dar 05.05.2016 02:46 # +1
Компилятор жавы в байткод - хуйня на постном масле. Вся мощь в jit, а он на c(++)
inkanus-gray 05.05.2016 00:45 # 0
А про директорию assembly, куда срёт NGEN и в которой хранится по несколько нативных сборок для каждой DLL (причём все сборки, кроме самой свежей, не нужны), все забыли...
3_14dar 05.05.2016 02:50 # 0
А что там хранится? Нативный код фреймверка или внешних программ?
kerman 04.05.2016 23:12 # 0
Херня аргументы. Дохрена памяти дотнет отжирает, если памятью пользоваться слишком сильно. Вообще GC дотнета лучший из управляемых. Понятно, что если ты потратишь десять лет на оптимизацию крестовой программы, то она будет быстрее и меньше памяти жрать, чем дотнетовская. Только нахуй она нужна через 10 лет?
guesto 05.05.2016 02:04 # 0
Программы на чем угодно часто работают медленее (иногда на 0.0001%) и требуют больше памяти (иногда на 10 мегабайт больше) чем программы на си
итого: ничего кроме си не нужно.
Пиздец. Школьники так рассуждают "джава тормозит -- джава ни нужна".
3_14dar 05.05.2016 02:52 # 0
Гуй на джаве на старом компе может тупить. А где она еще подтормаживает?
guesto 05.05.2016 13:26 # +1
могут подтормаживать конкретные реализации конкретных алгоритмов на конкретном железе
Если человек говорит "язык $LANG тормозит" то перед нами не программист, а ламер
3_14dar 06.05.2016 04:47 # +1
>могут подтормаживать конкретные реализации конкретных алгоритмов на конкретном железе
Без этих реализаций язык не нужен, а лучшей альтернативы может не быть.
guesto 06.05.2016 12:37 # 0
Вообще нет понятия "тормозит", нужно говорить о нехватке конкретного ресурса (памяти, IO, CPU) на конкретном железе
а то я сейчас напишу алогоритм с O(N!) на си и запущу ее на 286, и скажу что си тормозит
1024-- 06.05.2016 12:58 # +1
Можно почти на любом языке написать медленный код, можно для любого языка написать быстрый интерпретатор/компилятор, но в реальности есть какие-то средние выходные характеристики, определяемые порогом вхождения, существующими инструментами, популярностью, характерными задачами и т.п.
Языков программирования не существует. Языков в чистом виде нет. Есть только парсеры, трансляторы и наши представления. Всё, что связано с языками - это наши впечатления от работы компиляторов и программ. Смысла нет говорить о несуществующих математических абстракциях. Есть смысл говорить о существующих программных и аппаратных решениях.
Потому проще и логичнее сказать, что язык X тормозит, а Y - нет, потому что у X низкий порог вхождения, а у Y - высокий, а ещё и компилятор вылизанный.
Или давайте, обучите программистов, а также напишите оптимальные инструменты.
guesto 06.05.2016 13:00 # 0
а какой язык быстрее: C, асемблер, C++ или pascal?
1024-- 06.05.2016 13:11 # 0
Кстати, вспомним, что язык (именно та математическая абстракция) накладывает свои ограничения на мышление, направляет мысль что ли. Возьмём jQuery как такой язык (думаю, вполне можно считать это отдельным языком). document.getElementById('pitux') - долгая операция поиска в DOM, лучше не вызывать часто; $('#pituh') - простая и удобная магия, вызови её ещё раз, и ещё, и ещё.
3_14dar 06.05.2016 19:19 # 0
inkanus-gray 04.05.2016 14:13 # +1
А что насчёт Parrot? В Parrot можно добавлять опкоды с помощью динамических библиотек:
http://docs.parrot.org/parrot/latest/html/ops.html
guesto 04.05.2016 20:15 # +1
вот llvm хорош: это _регистровая_ виртуальная машина (такое редко бывает, поравда?) но регистры там можно добавлять на лету
во всяком случае у apple она отлично работает, и шланг умеет c/c++/objc из нее
3.14159265 06.05.2016 20:51 # 0
А ну-ка расскажи поподробнее. Интересно послушать.
>Аргумент про про "склонированное" вообще прекрасен! Что там склонировано? Идея виртуальной машины? Идея ГЦ?
Детали реализации, подходы к разработке. java-специфичные уши торчат тут и там.
Типа Math.abs в c# возвращает signed (в жабе других нету).
3_14dar 06.05.2016 21:01 # 0
guest 07.05.2016 04:21 # +1
>А ну-ка расскажи поподробнее. Интересно послушать.
тебя в гугле забанили? Почитай про ключевое слово var в C#.
Если ты не знаешь что такое "вывод типов" то википедия тебе в помощь
Сайт ебаных дремучих ламеров блядь
guest 07.05.2016 04:22 # 0
>А ну-ка расскажи поподробнее. Интересно послушать.
тебя в гугле забанили? Почитай про ключевое слово var в C#.
Если ты не знаешь что такое "вывод типов" то википедия тебе в помощь
Сайт ебаных дремучих ламеров блядь
wvxvw 04.05.2016 10:18 # +3
Со стороны это похоже на смесь гербалайфа и комсомола.
Что происходит потом: студенты выпускаются. Часть, конечно пойдет работать в другие конторы, которые уже уверовали в целительную силу Майкрософта, а часть которая захочет сделать по-новому и правильно - выберет, естесственно, самые лучшие технологии Майкрософта для своего стартапа. Пройдет лет десять, и бывшие стартаперы поймут, что выбор может быть был не самым удачным, но менять все теперь уже очень дорого.
defecate-plusplus 04.05.2016 10:24 # +2
я хорошо помню как в году эдак 04-05 к нам в вуз тоже приходили мальчики с одинаковыми прическами и галстуками, рассказывать какое дотнет охуительное изобретение, всучали брошюрки и кепки, покупайте нашу поебень, и вот уже почти готов процессор, исполняющий IL напрямую
одному так засрали мозги, что он с тех пор только на с# и пишет
kegdan 04.05.2016 13:57 # 0
defecate-plusplus 04.05.2016 14:54 # 0
кто проверяет, что вот этому принципалу можно дёргать вот этот рест?
kegdan 04.05.2016 16:16 # 0
Или я не понял вопроса?
defecate-plusplus 04.05.2016 16:37 # 0
или я юзер, а лезу в админские ресты
kegdan 04.05.2016 16:51 # 0
bormand 04.05.2016 18:42 # 0
Или всё-таки можно несколько фильтров с разными зонами ответственности?
3.14159265 06.05.2016 21:20 # 0
АОП не панацея. Тем более в данном конкретном случае.
В жабе испокон веков (до модных анотаций и jersey/spring rest) юзали javax/servlet/Filter.
Думаю в ASP.net так же можно зафигачить.
defecate-plusplus 06.05.2016 21:42 # 0
а о том, где там аспекты
3_14dar 04.05.2016 17:37 # 0
kegdan 04.05.2016 17:47 # 0
guesto 04.05.2016 17:59 # 0
kegdan 04.05.2016 18:07 # 0
1. расскажи как вставить срез в любое место кода
2. оплати мне лицензию в 630 бакинских
defecate-plusplus 04.05.2016 18:10 # +5
поэтому должен платить и каяться платить и каяться
kegdan 04.05.2016 18:14 # 0
guesto 04.05.2016 18:11 # 0
2. извини чувак, около микрософтовые техн0логии редко бывают бесплатными
ты сам C# выбрал
kegdan 04.05.2016 18:15 # 0
И вообще, какого х!!! ты отвечаешь, если я жду. что пидар выдаст что то интересное и тупое, как
3_14dar в http://govnokod.ru/19903#comment325322 написал:
>> жаве AOP реализуется сторонней библиотекой
defecate-plusplus 04.05.2016 18:16 # 0
аоп обычно работает по принципу "обвесить"
guesto 04.05.2016 18:17 # 0
kegdan 04.05.2016 18:24 # 0
бла бла бла
<DoSomeJob>
бла бла бла
guesto 04.05.2016 18:28 # 0
kegdan 04.05.2016 18:32 # 0
guesto 04.05.2016 19:23 # 0
Ты берешь, и пишешь что при всяком вызове метода этого интерфейса надо вызывать твой код. Твой код будет проверять можно-ли вызвать метод, и если можно то будет логировать этот факт.
Это лучше чем в начале каждого метода писать одинаковый код
kegdan 04.05.2016 19:26 # 0
бла бла бла
<DoSomeJob>
бла бла бла
привязываем код на DoSomeJob и втыкаем куда хотим в любые методы. Можно гибко перенастроить в процессе выполнения, привязав другой код
3_14dar 04.05.2016 19:27 # 0
kegdan 04.05.2016 19:29 # 0
даже простое логирование выльется в работу на несколько дней - создай им всем декораторов. А так еще и кеширование. и еще что нибудь добавится - вообще пиздец. Бизнес логики на 2 строки и 10 декораторов сверху
3_14dar 04.05.2016 19:55 # 0
kegdan 04.05.2016 20:17 # 0
офигенно, не правда ли?
А теперь представь что так нужно к каждому классу написать
3_14dar 04.05.2016 20:20 # 0
kegdan 04.05.2016 20:25 # 0
3_14dar 04.05.2016 20:30 # 0
А вообще иди нахуй. Нехуй тебе что-то объяснять.
kegdan 04.05.2016 20:35 # 0
guesto 04.05.2016 20:22 # 0
смысл АОПа в том что ты описываешь нечто не в вызываемом коде, а сам код про это ничего не знает
kegdan 04.05.2016 20:22 # 0
guesto 04.05.2016 18:29 # 0
Есть AspectJ, есть Spring. Синтаксис одинаков.
Spring умеет интроспектить создаваемые им бины, AspectJ умеет патчиить байткод, а умеет и ставиться агентом к джаве и править на лету
3_14dar 04.05.2016 19:16 # 0
Иди нахуй, нахуй тебе что-то объяснять чтобы потом ты еще помои лил.
kerman 04.05.2016 20:23 # 0
3_14dar 04.05.2016 19:11 # 0
guesto 04.05.2016 14:16 # 0
3_14dar 04.05.2016 17:36 # +2
guesto 04.05.2016 18:01 # 0
--кококо, ворд нистандартизирован
--вот же тебе спека docx
--кокок, я говорил про doc
--сишарп говно
--почему говно?
--потому что микрософт говно, кококо
--гимп лучше фотошопа
--чем лучше?
--тем что бесплатный
и такого ЛОРобразного дерьма из него вываливается вагон и маленькая тележка
3_14dar 04.05.2016 19:13 # 0
3.14159265 06.05.2016 21:22 # 0
Сравнивая его опыт и образованность, с твоим вопиющим неосиляторством... Ну это как сравнить Германию с усраиной.
В большинстве случаев wvxvw говорит очень дельно.
guest 06.05.2016 21:25 # +2
а один wvwvwvw со своим прологом осилил
это приверно как сравнивать нормальную страну в ватностаном
defecate-plusplus 06.05.2016 21:35 # +3
3.14159265 06.05.2016 21:37 # +3
Лоооол. И так банально спалился.
Проверочное слово: напитон.
3_14dar 06.05.2016 22:16 # 0
kegdan 06.05.2016 22:17 # 0
guest 07.05.2016 04:09 # −1
kegdan 06.05.2016 22:00 # +1
3_14dar 06.05.2016 22:15 # 0
Кстати, 3.14159265, иди нахуй, 3.14159265!
3_14dar 04.05.2016 17:43 # +1
wvxvw 04.05.2016 18:30 # +2
3_14dar 04.05.2016 19:12 # 0
> Я как бы в сортах говна... Они оба бесперспективные направления в программировании.
Ыыыыы :) Нахуй.
Не знаю какие это направления, но настоящее у них вполне есть.
Кстати, где больше градус - в украино-российских срачах или арабо-израильских?
guesto 04.05.2016 20:17 # +1
но крутому сис-админу из газеты конечно виднее что говно а что нет
kerman 04.05.2016 23:23 # +1
Они настолько, блядь, бесперспективные, что уже не первый десяток лет захватывают рынок и всё больше кода на них пишется. Шарп ещё молодой, а жава поглотила энтерпрайз сегмент чуть менее, чем полностью. И мобилки. И андроид в том числе. И ещё хуй знает что, ибо в каждом сегменте найдётся своя жаба.
3_14dar 05.05.2016 00:52 # +1
wvxvw 05.05.2016 00:59 # +4
Есть много людей толкающих Яву, или .НЕТ. Не потому что языки хорошие, или потому что им от этого хорошо. Просто так исторически сложилось. Большинство людей занимающихся продвижением этих языков элементарно ничего не знают про другие языки / технологии. Обычно это дурачки-студенты, которые проработали в одной и той же среде с десяток лет, и решили, что их опыта теперь достаточно для того, чтобы составить мнение. Это люди без теоретической базы, без настоящего жизненного опыта, заменившие и то и другое коммерческими лозунгами.
Ну и почему энтерпрайз стал эталоном написания хорошего кода? Я проработал в HP Business Object (APS отделе). Это был мой единственный долгосрочный контакт с энтерпрайзом в качестве программиста. Кроме этого у меня есть долгая история знакомства с энтерпрайзным кодом Адоба (в качестве тестера). Я не заметил никаких преимуществ в качестве кода. Как раз наоборот: такой код, как правило, унылое однообразное говно. Примеры хорошего кода, который я встречал были, как правило написаны энтузиастами развивающими свой язык, иногда - преподавателями публикующими книги, иногда - реализации утилит, у которых есть множесто конкурентов (не типично для энтерпрайза), например, компиляторы регулярных выражений, реализация IP протокола и т.п.
3_14dar 05.05.2016 01:21 # +2
guesto 05.05.2016 01:46 # 0
вот если бы был у них Великий Гуру из газетенки, который даже си не осилил, он бы рассказал им что настоящие продукты нужно писать на адобовском Кэшен Скрипте!
j123123 05.05.2016 05:16 # 0
guesto 05.05.2016 13:18 # 0
достаточно посмотреть на сложность решений гугла и вконтакта чтобы понять что сравнивать их не нужно
3_14dar 06.05.2016 04:49 # 0
wvxvw 05.05.2016 09:09 # +4
Если бы Ролсройсы стоили как Жигули, и их можно было производить таким же малоквалифицированым персоналом и за те же деньги, я думаю Жигулей бы продавалось гораздо меньше. Но то, что Жигулей продается больше Ролсройсов не значит, что Жигули качественнее.
У энтерпрайза как правило нет цели написать очень качественную програму, т.как цена, время и требования к персоналу скорее всего окажутся коммерчески неадекватными. Вотличие от этого, программы, где качество играет большую роль будут писаться на других технологиях, и тут, например, не редкость увидеть что-то из ML/Miranda-подобных языков, или даже Лисп/Пролог.
dxd 05.05.2016 11:16 # +3
wvxvw 05.05.2016 12:46 # 0
roman-kashitsyn 05.05.2016 12:53 # 0
Так эта штука не проверяет произвольные программы на CL, это просто очередной прувер. Как наличие прувера с CL-подобным синтаксисом помогает избегать ошибок (в том числе и в типах) в типичном CL-коде?
wvxvw 05.05.2016 15:42 # 0
dxd 05.05.2016 13:20 # 0
wvxvw 05.05.2016 15:42 # 0
guesto 05.05.2016 13:19 # 0
>>пролог
тьы болен
wvxvw 05.05.2016 15:38 # 0
Ну и кроме того, читать не умеешь. Речь про задачи требующие высокого качества, а не про энтерпрайз, где качество максимум среднее.
guesto 05.05.2016 16:28 # 0
Vasiliy 05.05.2016 16:41 # 0
быстрая разработка прототипов прикладных программ;
автоматический перевод с одного языка на другой;
создание естественно-языковых интерфейсов для существующих систем;
символьные вычисления для решения уравнений, дифференцирования и интегрирования;
проектирование динамических реляционных баз данных;
экспертные системы и оболочки экспертных систем;
автоматизированное управление производственными процессами;
автоматическое доказательство теорем;
полуавтоматическое составление расписаний;
системы автоматизированного проектирования;
базирующееся на знаниях программное обеспечение;
организация сервера данных или, точнее, сервера знаний, к которому может обращаться клиентское приложение, написанное на каком-либо языке программирования.
3.14159265 05.05.2016 16:51 # +4
guesto 05.05.2016 17:14 # 0
Хочешь, я тебе такого же про Фортран накидаю? или про Кобол?
Я тебе вопрос задал: в каких продакшен задачах сейчас он используется
А ты мне рассказал для чего он создавался.
Какие бля системы проектирования, какие сервера данных сейчас используют Пролог?
wvxvw 05.05.2016 17:46 # +1
Меня, как простого программиста не особо посвящали в детали того кто именно заказчик. Все, что я знал, что установок было около десятка. На одном из собраний промелькнула новость о том, что Бритиш Эирвейз является нашим "новым стратегическим партнером", что значит, что мы им поставляли наши САП говнопрограммы. Вот, я так понимаю они там в Бритиш Эирвейз, например, и пользуются Прологом.
Пример интересных задач, где используется Пролог: как язык запросов в графовых базах данных. Например в AllegroGraph. Другой пример: Пролог используется для парсинга и поиска закономерностей в ДНК (DNA-ChartParser).
kerman 05.05.2016 02:36 # 0
Заебись логика. Шарп и жава популярны, потому что их толкают те, кто нихуя не понимает, но так исторически сложилось.
То есть ты реально не понимаешь, почему эти языки стали популярными?
3_14dar 05.05.2016 02:45 # +2
3_14dar 04.05.2016 19:14 # 0
Это действительно так? Что на жаве бесплатно, на шарпе платно?
guesto 04.05.2016 20:19 # 0
2. Сервер под веб. IIS требует Windows Server (ну для серьезных задач) а сервер стоит денег. tomcat (или jetty)@Linux бесплатен
Это так, сразу
3_14dar 04.05.2016 20:44 # 0
IIS на десктоп вообще не ставится что ли?
defecate-plusplus 04.05.2016 21:20 # 0
с ограничением 10 одновременных клиентов
3_14dar 04.05.2016 22:11 # 0
Небось все отключается одним ключиком в реестре?
defecate-plusplus 04.05.2016 22:27 # 0
искусственные ограничения ОС
иначе все будут на виндовс 7 работать вместо гораздо более дорогого винсервера
3_14dar 04.05.2016 22:47 # 0
Они раньше парой ключиков и отключались.
inkanus-gray 05.05.2016 00:49 # 0
guesto 05.05.2016 01:47 # 0
Придумай алгоритм, ты же программист.
Даже если и ключиком -- это нарушение лицензии, а энтерпрайз на это не пойдет
3_14dar 05.05.2016 02:43 # 0
>Даже если и ключиком -- это нарушение лицензии, а энтерпрайз на это не пойдет
Вот поэтому могли и ключиком сделать.
Кстати подменять баннер апача - нарушение лицензии.
guesto 05.05.2016 16:29 # 0
3_14dar 06.05.2016 04:50 # 0
guesto 06.05.2016 12:38 # 0
3_14dar 06.05.2016 19:21 # +1
3.14159265 06.05.2016 21:07 # −1
В граниты!
3_14dar 04.05.2016 17:38 # 0
Xom94ok 02.05.2016 17:41 # +5
Ненавижу это явление. Какой-нибудь прославившийся хрен под вечернее пивко в твиттерок пишет: "Нормальные пацаны пишут typedef посерёдке: int typedef ko_type; по-старому - пидарство и нечитаемо."
А через неделю на совещании солянка из таких "правил" распечаткой падает на стол, сопровождаемая словами: "теперь пишем так, иначе - минус премия, плюс десять ударов хлыстом на главной площади".
Любой код, если его не трогать, через полгода превращается в говно, как бы старательно в нём не избегали использования свойств, синтаксического сахара, венгерки, копипаста и т.д.
Dummy00001 02.05.2016 17:59 # 0
это называется "мода". или - "стадный инстинкт".
и человечество всегда было падко на шарлатанов с панацеями.
> А через неделю на совещании солянка из таких "правил" распечаткой падает на стол [...]
а это скорее лень и часто простая неграмотность начальства/лидов. вместо того что бы работу делать, и себя в курсе текущих подводных мин держать, предпочитают время расходовать на поиск панацей проблем программирования. но все заканчивается тем что все эти панацеи оказываются на самом деле плацебо... и все начинается по новой.
j123123 02.05.2016 00:21 # 0
kerman 02.05.2016 02:14 # +1
j123123 02.05.2016 02:22 # +1
j123123 02.05.2016 02:24 # +4
bormand 02.05.2016 08:13 # −1
inkanus-gray 02.05.2016 10:56 # +2
В аналоговых схемах удавалось реюзать транзисторы. Количество уровней сигнала, ограниченное только квантовыми эффектами, позволяет разделить сигналы после смешивания.
В цифровых хуже: там придётся разделять сигналы по времени с помощью стробирования. В итоге придём к чему-то, похожему на процессор.
P.S. Хотя в цифровых мы можем использовать ШИМ, фактически пропуская аналоговые сигналы через цифровые логические элементы.
Dummy00001 02.05.2016 16:27 # +2
TDMA не одинок. есть еще CDMA. это когда (примитивный пример) бродкастится число, и каждый девайс вычисляет модуль по сконфигурированому числу. остаток после модуля и есть передаваемая информация для этого девайса.
ЗЫ похоже все уже забыли про "аналоговые компьютеры". https://ru.wikipedia.org/wiki/Аналоговый_компьютер . там правда мало чего описано и примеров мало. но тут есть чего - https://ru.wikipedia.org/wiki/Интегратор .
kerman 02.05.2016 23:42 # 0
guest 28.02.2017 04:46 # 0
Dummy00001 02.05.2016 16:14 # 0
ты где это Г нашел?
kegdan 02.05.2016 16:20 # 0
Dummy00001 02.05.2016 16:31 # 0
это как там еще какое то светило в некрософте, который проповедует что номера версий это излишне и плохо. под его влиянием народ на первых Н версиях DirectX трахался с определением версии DX (что бы воркараунды/совместимость в рантайме активировать).
3_dar 02.05.2016 16:40 # +7
Нарисуем куб с двумя источниками света. Если площадь тени меньше 42.314, то версия X, иначе Y.
Dummy00001 02.05.2016 16:51 # +1
bormand 02.05.2016 17:04 # 0
kerman 02.05.2016 17:39 # +1
bormand 02.05.2016 17:40 # 0
kerman 02.05.2016 21:12 # +2
На читаемость кода и возможность поддержки ему просто насрать.
Короче, эту книжку надо в обязательном порядке закусывать Мартином Фаулером.
guesto 02.05.2016 21:28 # 0
А Рихтер один из старейших сотрудников MS
Он писал про WinApi via C и про разработку под винду еще в 80х (кроме него и Пецольда про винду вообще тогда не писали)
Его книга про .NET одна из лучших
kerman 02.05.2016 21:46 # 0
guesto 02.05.2016 21:49 # 0
Он учит не красоте кода, а архитектуре вирт машины, и называть его упоротым, по меньшей мере, глупо
kerman 02.05.2016 22:01 # 0
> Он писал про WinApi via C и про разработку под винду еще в 80х (кроме него и Пецольда про винду вообще тогда не писали)
>> Причем тут авторитет?
Ну так аппелирование к авторитету же.
А термин "упоротый" в данном случае трактуйте как синоним "черезмерно увлечённый", чтобы не было баттхёрта. Сэр.
kegdan 02.05.2016 21:52 # +2
Ну так Рихтер и не учит писать красиво. Он рассказывает как устроен дотнет
guesto 02.05.2016 21:53 # 0
красоте учит Фаулер, "программист прагматик", "совершенный код", "континиус деливери" итд
kegdan 02.05.2016 21:55 # 0
guesto 02.05.2016 21:56 # 0
У него есть отличная книжка про энтерпрайз паттернс
и про энтерпрайз интегрейшен паттернс
итд
а про сами паттеры нужно ганг ов фор
kegdan 02.05.2016 21:58 # 0
Самые адекватные паттерны у Лармана.
3.14159265 06.05.2016 21:14 # 0
>энтерпрайз паттернс
>энтерпрайз интегрейшен паттернс
>паттеры нужно ганг ов фор
Не возвращайся никогда.
guest 07.05.2016 22:09 # 0
интерпрайз ни нужен
ты бессмысленный, жалкий пиздун
kerman 02.05.2016 21:58 # 0
kegdan 02.05.2016 22:00 # 0
kerman 02.05.2016 22:08 # +1
kegdan 02.05.2016 18:07 # 0
bormand 02.05.2016 18:09 # 0
kegdan 02.05.2016 18:10 # 0
kerman 02.05.2016 18:17 # 0
kerman 02.05.2016 21:38 # 0
http://i.imgur.com/RcBizFT.jpg
bormand 02.05.2016 21:40 # 0
kerman 02.05.2016 21:47 # 0
kegdan 02.05.2016 21:46 # 0
kerman 02.05.2016 21:50 # 0
Вообще все книжки рекомендую с оговорками. Эту особенно с оговорками.
kegdan 02.05.2016 21:51 # 0
3.14159265 06.05.2016 21:12 # −1
>C#
>ООП
>реfuckторинг
>паттерны
Да тут же полный набор!
wvxvw, срочно 10 томов нормальных книжек, внутричерепно!
guest 07.05.2016 04:12 # 0
C# пользуются только идиоты. Нужно писать на прологе.
ООП пользуются только маркетологи. Нужно писать на прологе.
Рефакторинг это маркетинговый шлак. Нужно сразу писать хорошо (и на прологе).
Паттерны это маркетинговый шлак, у нас в прологе их нету
Типизации не существует, это маркетинговый шлак
с уважнием,
Сетевой администратор "Едиот Ахронот", wvxvw
guest 07.05.2016 04:20 # 0
Microsoft не стандартизирован и им пользуются только посредственности. С Microsoft никогда не стать программистом.
В Microsoft даже пролог не используется.
Microsoft не мощный, и фотошоп не мощный потому что платный. Гимп бесплатный, потому им удобнее. Чем бесплатнее продукт, тем он удобнее. Непосредственности пользуются бесплатными продуктами, платными продуктами пользуются только посредственности, потому что это это гербалайф и секта. Если ты пользуешься майрософт, то ты посредственность, жертва маркетинга, гербалайф и секта. нужно использовать gimp и пролог.
j123123 07.05.2016 21:31 # 0
На ассемблере
kerman 05.05.2016 02:40 # +1
dm_fomenok 27.02.2017 14:55 # 0
dm_fomenok 14.05.2018 14:01 # 0
roskomgovno 14.05.2018 16:31 # 0
Но вообще Рихтер крут
За Win32 via C и CLR via C# надо ставить памятник
subaru 14.05.2018 22:54 # 0
roskomgovno 15.05.2018 00:41 # 0
subaru 15.05.2018 09:18 # 0
pedikulez_v2 15.05.2018 09:37 # −1
roskomgovno 15.05.2018 14:48 # 0
В последствие можно будет реализовать set и get по-другому, а пока что они просто представляют аксессор и мутатор для филда.
Сравним с жабой
guest8 15.05.2018 14:57 # −999
roskomgovno 15.05.2018 18:11 # 0
roman-kashitsyn 15.05.2018 19:23 # 0
Далеко не всегда это является проблемой. Мне приходилось превращать поле в свойство примерно... 0 раз.
1024-- 15.05.2018 10:28 # 0
Бедненькие! Не могу читать без слёз. Это несправедливость. Как же вы без них живёте?
Кушайте, крестушатки. Кушайте, маленькие.
https://ideone.com/Y4S7jx
shit_again 15.05.2018 11:05 # 0
1024-- 15.05.2018 11:28 # 0
Написание кода с пропертями можно и подсахарить:
И можно использовать без знания тонкостей проставления const и ссылок:
shit_again 15.05.2018 11:57 # 0
Мама-мама, а этот дяденька ругается нехорошими словами. Он сказал "#define" и "##name", а ещё он показывал мне свой SETTER.
1024-- 15.05.2018 12:02 # 0
Крестушоночек, не плачь. Тех, кто плачет, сбрасывают со скалы в обрыв с макросами. Это не Питония, это C++арта.
3oJIoTou_xyu 15.05.2018 13:46 # 0
1024-- 15.05.2018 14:00 # 0
syoma 15.05.2018 20:03 # 0
1024-- 15.05.2018 20:59 # 0
syoma 15.05.2018 21:51 # 0
1024-- 15.05.2018 22:01 # 0
Впрочем, на ней он всё равно не так сильно искривляется, это да.
roman-kashitsyn 15.05.2018 13:14 # 0
> Тут уж лучше методы.
+1
guest8 15.05.2018 11:50 # −999
roskomgovno 15.05.2018 00:56 # 0
Одну технологию выбирый
@
Про другие технологии нихуя не знай
@
Но усиленно их обсирай
subaru 15.05.2018 09:18 # −2
Мое мнение правильное
@
Все несогласные - мудаки