- 1
- 2
- 3
class Govno {
virtual void govno() = 0;
};
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
class Govno {
virtual void govno() = 0;
};
Откуда такой дурацкий синтаксис? ))
Прочитал у страуса, джва дня смеюсь.
Может кто-то знает причину?
vistefan # 0
guest # 0 ⇈
https://i.imgur.com/0vMYsCm.jpg
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
inkanus_gray # 0 ⇈
Ну а сам все налегает На селедку иваси!
© Леонид Филатов
guest # 0 ⇈
guest # 0 ⇈
Goh # 0 ⇈
guest # 0
Мне тоже слова abstract не хватает.
vistefan # 0 ⇈
именно abstract, как идиомы. Но получается, что для того, чтобы понять, что экземпляры класса нельзя создавать, нужно проверить, не присваивается ли какому-то из его методов нуль ))) Лол.
bormand # 0 ⇈
yet_another_one_shit # 0 ⇈
Эта пизда мне не давала в мост в антед иградь. Помницца на кабре была стотья, где чувак в лолидебагере испражнялсявлял эту ошипко.
roman-kashitsyn # 0
P.S. мне не смешно было, пофигу собственно.
vistefan # 0 ⇈
Вряд ли, скорее это легаси, о котором говорит борманд.
Если б уж экономить слова, можно просто оставить виртуальный метод без какой бы то ни было реализации, чтобы обязать неабстрактных потомков его реализовать. В такой ситуации накакой '= 0' бы не понадобился, насколько я понимаю, и вышло бы короче. Похоже, когда-то кому-то хотелось срать в vtable руками. А сейчас это всё ещё можно?
bormand # 0 ⇈
roman-kashitsyn # 0 ⇈
vistefan # 0 ⇈
guest # 0 ⇈
vistefan # 0 ⇈
guest # 0 ⇈
Невиртуальный метод выбирается в момент компиляции
Виртуальный выбирается в рунтайме через виртаблу и зависит от объекты (как в джаве например)
Пьюр виртуал не имеет реализации обычно и его потомки обязаты реализовать (как абстракт в жабе например)
vistefan # 0 ⇈
guest # 0 ⇈
Можно перегрузить метод __call, чтобы он обработал любое имя:
http://php.net/manual/ru/language.oop5.overloading.php
roman-kashitsyn # 0 ⇈
Давайте же обратимся к The Design and Evolution of C++:
13.2.3 Syntax
The curious = 0 syntax was chosen over the obvious alternative of introducing a keyword pure or abstract because at the time I saw no change of getting a new keyword accepted. Had I suggested pure, Release 2.0 would have shipped without abstract classes. Given a choice between a nicer syntax and abstract classes, I chose abstract classes. Rather than risking delay and incurring the certain fights over pure, I used the traditional C and C++ convention of using 0 to represent "not there".
Шах и мат, аметисты.
Хорошо ещё, что они это PURE не назвали, = 0 гораздо лучше.
guest # 0 ⇈
Можно еще примеров пожалуйста? Это он про укойзатель?
roman-kashitsyn # 0 ⇈
this.
vistefan # 0 ⇈
TOPT # 0 ⇈
Звук косания говна с поверхностью воды унитаза?
guest # 0 ⇈
Минус в том, что она загаживалась быстро
Плюс в том, что ты не получал водой по жопе когда случается буль
guest # 0 ⇈
А те, которые без площадочки, называются козырьковыми. Те, у которых дырка чётко по центру, обычно больше всего плещут водой по жопе. Те, у которых дырка смещена от центра, пафосно зовутся «система антивсплеск».
guest # 0 ⇈
vistefan # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
yet_another_one_shit # 0 ⇈
rajluTo3Huk # 0 ⇈
guest # 0 ⇈
Разумеется, дело не в этом.
Скажи еще что от онанизма руки волосатые
guest # 0 ⇈
guest # 0 ⇈
roman-kashitsyn # 0 ⇈
И этим экспертом будет инканус грей.
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
Тут некоторые пытаются мне доказать что дескать программисту нужно думать, но я за разделение труда. Менять унитазы должен сантехник, думать -- философ, а программист должен программировать.
guest # 0 ⇈
guest # 0 ⇈
Логические -- логик
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
Напоминает роли в J2EE.
https://docs.oracle.com/javaee/6/tutorial/doc/bnaca.html
Enterprise Bean Developer (хочу им быть)
Web Component Developer (ахахахахахха)
Application Client Developer
Application Assembler
Application Deployer and Administrator
guest # 0 ⇈
— Я старший мерчендайзер!
— А я контент-провайдер!
guest # 0 ⇈
А еще я клининг менеджер
guest # 0 ⇈
http://sce.uhcl.edu/helm/rationalunifiedprocess/process/workers/ovu_works.htm
Capsule Designer
Code Reviewer
Database Designer
Implementer
Integrator
Software Architect
Architecture Reviewer
Design Reviewer
Designer
Test Designer
System Analyst
Business Designer
Business-Model Reviewer
Business-Process Analyst
Requirements Reviewer
Requirements Specifier
Test Analyst
User-Interface Designer
Tester
Process Engineer
Project Manager
Change Control Manager
Configuration Manager
Deployment Manager
Project Reviewer
Test Manager
Stakeholder
Any Role (sic!)
Course Developer
Graphic Artist
Tool Specialist
System Administrator
Technical Writer
Вот сколько надо человек чтобы сделать продукт
А не ваше, блядь, хуяк-хуяк и в продакшен
guest # 0 ⇈
guest # 0 ⇈
Я вообще не понимаю ак можно работать без всех этих инструентов
guest # 0 ⇈
Тормозное говно.
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
Ясно-понятно
guest # 0 ⇈
У Вас баттхёрт, когда кто-то критикует Ваше любимое тормозное говно?
guest # 0 ⇈
bormand # 0 ⇈
Да ну, нормально работает на 32 гигах.
bormand # 0 ⇈
vistefan # 0 ⇈
Хранитель жаренного мяса?
> System Administrator
Наконец-то, хоть к кому-то можно обратиться.
roman-kashitsyn # 0 ⇈
Вот тебе смешно, я пользовался Rational ClearCase и писал ишью в ClearQuest мохнатой версии (там по умолчанию ещё везде был моноширинный шрифт, а Esc сразу удалял весь комментарий, который ты пишешь. Меня, как пользователя Vim, это тогда невероятно радовало).
bormand # 0 ⇈
Отражает наглядность и интуитивность этой софтины?
Goh # 0 ⇈
{
}
roman-kashitsyn # 0 ⇈
Ну кстати та версия, которой я пользовался, насколько я помню, была очень простой, чуть ли не проще багзилы. Но потом её начали заменять каким-то самописным индусским жабоговном, которое я очень слабо помню. Вот там было не интуитивно.
Может, СНаУТ помнит.
CHayT # 0 ⇈
roman-kashitsyn # 0 ⇈
Ага, оно.
guest # 0 ⇈
vistefan # 0 ⇈
А вы что, вместе работали? Или это что-то велл-ноун?
guest # 0 ⇈
CHayT # 0 ⇈
CHayT # 0 ⇈
Это что. А я из неё ещё отчёты генерил, вот где был АДЪ.
guest # 0 ⇈
guest # 0 ⇈
Меня это добивает в Intellij с vim plugin.
Пишешь коммит мессадж, хочешь сменить режым, жмешь ESC, и окошко закрывается (правда сохраняется драфт)
Я писал автору плагина, он говорит "юзай CTRL+C"
CHayT # 0 ⇈
Что? Всего одна роль? Они там вообще не тестируют что ли?
- Test Automation Engineer
- Test Automation Architect
- Test Tool Engineer
- Test Suite Responsible
- Test Specification Writer
- Test Engineer
Ну это так, для начала.
bormand # 0 ⇈
CHayT # 0 ⇈
vistefan # 0 ⇈
Почему. Скорее если у софтины есть строго сформулированные в ТЗ требования к дизайну (например, это модный мессенджер на электроне или мобильное приложение на триллиард пользователей, которое ребрендится), Test Graphic Artist может проверять работу другого художника, подходит ли она под требования закащщика к юзабилити или там ещё чему-нибудь. То есть логика. A делает по специальности, test A проверяет то, что делает А по специальности. А твоё предположение про редактор, там тестер, я так понял, должен рисовать в редакторе свои рисунки чтобы протестить, удобно ли? Чо-то не то, как-то ломает консистентность. Скорее уж он будет консультантом при разработке ТЗ, раз знает предмет.
guest # 0 ⇈
yet_another_one_shit # 0 ⇈
guest # 0 ⇈
TOPT # 0 ⇈
bormand # 0 ⇈
TOPT # 0 ⇈
guest # 0 ⇈
Версаль засрут -- едут в Лувр на пару десятилетий
TOPT # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
Обычно время поиска в них меньше чем в списках
vistefan # 0 ⇈
Под моим окном
Принакрылось снегом,
Точно серебром.
На пушистых ветвях,
Снежною каймой
Распустились не дольше чем за O(log n) кисти
Белой бахромой.
guest # 0 ⇈
TOPT # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
Вообще забавно:
в JS ассоц. массив и объект это одно и тоже, массив это частный случай объекта.
В PHP объекты это объекты, массивы это массивы, но ассоц массивы это тоже массивы (как мне помница)
В остальных скриптояпах (py, ru, per) это разные понятия
И тут выделяеца луа, у которой есть только один нескалярный тип: табла
Таблу можно сделать и массивом и объектом и даже неймспейсом в некотором смысле и конечно же можно сделать мапо/хеше/ассоц массиво
Луа всех переплюнуло
guest # 0 ⇈
Т. е. в "PHP" все массивы — это массивы, но к ним можно пристроить символьные индексы (хэш-таблицу, тогда foreach будет отдавать предпочтение символьным индексам, а не числовым).
***
В JS вообще всё запутано. Там объекты появились не сразу. В каком ещё ЯП можно создать объект вызовом new Function()?
Однако, JS, в отличие от "PHP", принципиально различает массивы с числовыми индексами и ассоциативные массивы (последние у него — фактически обычные объекты, а элементы ассоциативного массива — поля объекта).
guest # 0 ⇈
guest # 0 ⇈
Так что тут внезапно я более согласен с JS чем в Python, Ruby, PHP и Perl.
А вот смешивание массива и ассоц массива (как в PHP) мне не нравица потому что можно легко запутаца.
Ну опять таки: я делаю исключение для Lua, потому что это его фишка:)
ЗЫ: Забавно что отсутствие именованных аргументов в говнояпах часто лечица ассоциативными массивами (они же мепы, хешы и дикты).
Основу заложил перл, руби съобезьянничало (правда потом завезло упр0щенный синтаксис, да дальше и вовсе исправило) а в JS так до сих пор и делают. И это бесит
По этому я жа objc: там все аргументы именованы
vistefan # 0 ⇈
И имена вообще везде надо писать?
Если опционально, то в питоне и scala тоже все аргументы именованы.
guest # 0 ⇈
в обжси имя параметра это часть сигнатуры функции
vistefan # 0 ⇈
О ужос, а нах?
И без имён этих, вообще вызвать нельзя? Ну, если ты порядок аргументов помнишь. А почему просто имя переменной (title, petuh) не делать собственно и именем параметра?
yet_another_one_shit # 0 ⇈
Как в смольолке же, вместо вызова метода шлют сообшения объектам.
guest # 0 ⇈
guest # 0 ⇈
нет
Аргументы при вызове вставляются в специльнае места в сигнатуре функции.
Объявление метода (это его имя!!)
вызывается как
Как видишь читается это как английский язык, но имя папараметра это часть имени функции, его физически нельзя упустить.
guest # 0 ⇈
http://govnokod.ru/24790#comment430660
guest # 0 ⇈
Что смешного?
1024-- # 0 ⇈
TOPT # 0 ⇈
TOPT # 0 ⇈
guest # 0 ⇈
Получица гибрид: ассоциативный массив то и обычный тоже
TOPT # 0 ⇈
guest # 0 ⇈
ну раз ты живешь в 2010-м году, то зайди пожалуйста на этот сайт и передай привет Тарасу.
Here are the other changes introduced in Lua 5.2:
Language
tables honor the __len metamethod
такшта ты прав
Но 5.2 случился в 2011 же уже, там уже 5.3 стабильный
TOPT # 0 ⇈
Немного напоминает ситуацию с питоном 2 и 3
guest # 0 ⇈
guest # 0 ⇈
Хотя погоди, ты сказал "полезного"?
Ничего.
TOPT # 0 ⇈
guest # 0 ⇈
Был очень толстый нахрюк на реализацию юникода в тройке, автор фласка даже хотел форкать 2.7 и делать 2.8, но потом успокоился
Вроде бы многие уже перешли на тройку, но двойка много где осталась (она питон по умолчанию на хуевой куче дистров например)
guest # 0 ⇈
guest # 0 ⇈
У Армина жена русская, кстати
Он ебется, а ты -- нет
guest # 0 ⇈
* Rooster = петух, roost = петушня, ruster = питух, rust = питушня.
guest # 0 ⇈
Кстати roost это подставка под питуха
bormand # 0 ⇈
Насест?
guest # 0 ⇈
vistefan # 0 ⇈
Это наверное тот чувак с говнокода, который недавно гуглил как выскочить замуж за программиста.
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
TOPT # 0 ⇈
CHayT # 0 ⇈
CHayT # 0 ⇈
guest # 0 ⇈
CHayT # 0 ⇈
guest8 # 0 ⇈
guest # 0 ⇈
TOPT # 0 ⇈
-Это дествительно похоже на поведение приматов?
- А что это означает когда примат в примата кидает какахи?
guest # 0 ⇈
Обезьяны действительно так делают
https://www.youtube.com/watch?v=jhoGErm52R0
yet_another_one_shit # 0 ⇈
guest # 0 ⇈
vistefan # 0 ⇈
guest # 0 ⇈
rajluTo3Huk # 0 ⇈
vistefan # 0 ⇈
Я джаву учу вообще.
guest # 0 ⇈
bormand # 0 ⇈
vistefan # 0 ⇈
Я это сразу понял, но как пишет ниже борманд, вроде как это не баг:
- стандартизирован размер примитивных типов
- всюду левая ассоциативность (стандартизирован порядок вычислений)
- нет перегрузки операторов
- нельзя кастовать массивы примитивных типов
- ничто не приводится к логическому типу
- нет перекрытия имен сущностей
- только ковариантность в полиморфизме
Единственное, что мешает ему быть совсем примитивным -- это наличие, внезапно, примитивных типов. Ну допустим. А в целом он довольно неплохо изгоняет демонов из крестов. Ну в общем-то и хуй с ним. Много воды, но кроме объёма кода, багам больше негде спрятаться в какой-нибудь сложной логике взаимодействия чего-то с чем-то. Всё вроде как написано, и только то, что написано, то и происходит.
Вроде как статическому анализу тоже хорошо подвергается. Хотя явных приведений типов многовато.
В общем, идея сделать ваще тупой язык, на котором чтобы писать нужно знать три конструкции, пару концепций общих и ОГРОМНУЮ СТАНДАРТНУЮ БИБЛИОТЕКУ мне нравится, как альтернатива языкам, где надо знать миллиард конструкций, специальных синтаксисов, частных случаев, неявных приведений.
Люблю я, разумеется, и то и то. Просто говорю, что жаба более чем имеет право на жизнь, кмк.
3oJIoTou_xyu # 0 ⇈
vistefan # 0 ⇈
Вредно говорить на языках, продолжения которых не знаешь.
3oJIoTou_xyu # 0 ⇈
Steve_Brown # 0 ⇈
Plain C с RAII на макросах
guest # 0 ⇈
Всякие uint32_t завезли еще в C99.
>>всюду левая ассоциативность (стандартизирован порядок вычислений)
a++ + ++a, да?
ok
>>- нет перегрузки операторов
О, да. BigDecimal.plus очень удобно. И массивы смердживать.
И строки через equals сравнивать тоже.
>>нельзя кастовать массивы примитивных типов
К чему кастовать?
>>- ничто не приводится к логическому типу
ну это средних размеров плюс
>>- нет перекрытия имен сущностей
не понял.
>>- только ковариантность в полиморфизме
Массивы ковариантны (хотя крайне хуево), а генерики могут быть и контрвариантны тоже:
List<? super Petuh>
>>это наличие, внезапно, примитивных типов
Без них довольно сложно было бы, например, скачать файл по сети. Представь себе сколько весил бы файл если бы вместо массива байт у тебя был бы массив указателей на обертки, по 4(8?) байт на каждую.
Хотя работа с ними приносит боль, но хоть боксинг завезли (раньше и его не было)
Твой код отлично показал что жава сосет:
* нет вывода типов
* нет дата классов
* нет пропертей
>>ОГРОМНУЮ СТАНДАРТНУЮ БИБЛИОТЕКУ
В которой раньше надо было создать пять объектов чтобы считать из файла в строку, да:) И еще 50 строк чтобы из массива интов и лист Интов перевести
Потому все юзали Guava, Apache Commons итд. Потому что библиотека слабая.
С завозом стримов в восьмерку стало чуть лучше коечно
vistefan # 0 ⇈
Ни к чему нельзя, насколько я понял. Может у меня старая инфа, сейчас проверю, но вроде нельзя, например, массив байтов превратить в массив интов кастом.
guest # 0 ⇈
Да, потому что байт не наследник инта:) Читни про промоутинг и вайденинг
https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html
А наследников, разумеется, кастовать можно (вот тебе кококококвариантность)
class Jaba extends Petux{}
///
Jaba[] s = {new Jaba()}
Petuh[] a = (Petuh[]) s;
vistefan # 0 ⇈
Я перечислял не плюсы, а упрощения по отношению к языкам, которые на джаву повлияли
> не понял.
В большинстве языков у тебя может быть например переменная А в классе и переменная А как параметр метода. Если есть такая ситуация, другие языки просто выбирают более специфическую (объявленную в более узкой области видимости) переменную. В Джава же такой код вызовет ошибку компиляции. Сущности с одинаковыми именами могут быть только в непересекающихся областях видимости.
Не скомпилируется: Скомпилируется: > Без них довольно сложно было бы
Да, причину, почему так сделали, я прекрасно понимаю. Более того, языки на основе джавы, типа скалы, где нет примитивных типов, что-то не сильно заметно ПРОЩЕ джавы.
guest # 0 ⇈
Шото ты мене лечиш
Что тут не скопелируется?
vistefan # 0 ⇈
Тот код, что я привёл, действительно не компилится. Но да, с параметрами работает, тут я пролечил. Короче, вот этот кусок кода: в С++ скомпилится, а Java даст error: variable a is already defined. А вот такой сработает везде.
vistefan # 0 ⇈
Никогда не понимал смысл контрвариантности, может пояснишь?
Вот я сделал полиморфную функцию, а зачем мне знать, что туда влезет какой-то класс и все его ПРЕДКИ. С потомками понятно, они гарантированно реализуют какой-нибудь контракт, имеют методы или поля. А обратно?
Не понятно.
Поэтому я за "ковариантность"
bormand # 0 ⇈
vistefan # 0 ⇈
А, ну да. Спасибо.
guest # 0 ⇈
out -- можно вытаскивать
in -- можно ложить в
но смешнее всего сделално в pep-484:
TypeVar('T_co', covariant=True)
TypeVar('T_co', contravariant=True)
vistefan # 0 ⇈
in и out -- это хорошо, только если они не зарезервированы как ключевые слова, потому что иначе очень неприятно терять такие красивые имена переменных ((
in и так во многих языках проёбан, навскидку в js, в python...
Вот в скалке просто когда параметризуешь дженерик типом, к нему можно приписать ковариантность и контравариантность в виде [T], [+T] или [-T].
roman-kashitsyn # 0 ⇈
Рассмотрим предикат p : a -> Bool. Если он работает для a, его можно приспособить для чего угодно, из чего можно получить a.
т.е. есть функция contramap : (b -> a) -> (a -> Bool) -> (b -> Bool), которая может взять проекцию из b в a, предикат для a, и сделать предикат для b.
Если взять какой-нибудь compare : a -> a -> Bool, то он почти ничем не отличается от предиката, и с ним можно проделать такой же трюк.
Вырисовывается шаблон.
В убогой джаве мы не работаем с функциями высшего порядка, у нас нет никаких "проекций". Вместо этого у нас отношение "наследования", что по сути является очень специальной проекцией: из подтипа можно получить базовый тип. Из предиката T можно получить предикат T' extends T. Из Compare<T> можно получить Compare<T'>, где T' extends T.
В общем случае, то, что производит/содержит значения, как список, является ковариантным функтором (функция тоже производит, a -> b производит b). То, что потребляет значения, является контравариантным функтором (функция тоже потребляет, a -> b потребляет a). То, что умеет делать и то, и другое, функциональщики называют профунктором (функция, как ты видишь, является одним из простейших профункторов).
Т.е. контравариантность/ковариантность идут рука в руку. Ковариантность понимать почему-то проще, но она ничем не "лучше" своей дуальности, просто другая.
guest # 0 ⇈
roman-kashitsyn # 0 ⇈
Так они и есть функции, из индекса/ключа в значение. Функция есть коллекция пар (a, b), где для каждого a ровно одно b, и любая коллекция с таким свойством есть функция.
В скалке даже синтаксис для обращения к массиву или мапе идентичен:
massiv(1)
mapa("kokoko")
guest # 0 ⇈
https://ideone.com/IK9Gj1
Именно поэтому я за "PHP".
vistefan # 0 ⇈
Только это сахарок, в действительности функция будет функцией, а мапа или массив будет объектом с определенным методом apply, имя которого можно опускать, и получается синтаксис со скобочками.
guest # 0 ⇈
https://ideone.com/tbegCF
vistefan # 0 ⇈
CHayT # 0 ⇈
roman-kashitsyn # 0 ⇈
В общем-то да, на редкость унылый и тупой пердолинг.
То ли дело разбираться, почему у тебя прод в корку падает, или приложение на новой версии ОС зависает, хотя раньше работало.
vistefan # 0 ⇈
Что значит в корку?
roman-kashitsyn # 0 ⇈
Core Dump
guest # 0 ⇈
guest # 0 ⇈
если интересна этимология -- читать про память на ферритовых сердечниках
guest # 0 ⇈
guest # 0 ⇈
А вот когда в коде сплошой самопал это уныло, да. Надо читать простыни на 800 строк, особенно на шестой какой нить джаве
CHayT # 0 ⇈
guest # 0 ⇈
Там просто надо перезагружать комп (ну или он сам перезагрузится)
vistefan # 0 ⇈
Это да (
А у меня приложение по интеграции разбито на джавовскую и скаловскую части, так что можно иногда передохнуть, а ещё груви-свиток написать хуёвый.
guest # 0 ⇈
vistefan # 0 ⇈
Хуй знает. Не, не метапрограммировал ещё, так, методом тыка написал пару говноскриптов, чтобы на продакшен вкатить кучу сущностей из csv-файла, потому что просто sql там не подходил, нужно было создавать именно сущности проекта, у них многие поля при сохранении в базу заполняются автоматически.
Только шутку пока тупую про него придумал, что типа на самом деле этот язык и должен был называться JavaScript.
guest # 0 ⇈
Почти любой код на джаве валиден и для груви (но не наоборот)
Кроме того груви можнок омпилировать
В нем есть как мелкий сахар (литералы для массивов, проперти, лямбды были давно итд) так и крупный: возможность править AST в момент компиляции например
Груви очень мощный язык на самом деле, но не выстрелело
vistefan # 0 ⇈
> Почти любой код на джаве валиден и для груви (но не наоборот)
как раз-таки Java, только Script и получается. Я не про экма, я про то, что вот как раз груви и следовало бы назвать джаваскриптом, потому что это скриптовой язык, который понимает джаву. Почти. В первом же свитке столкнулся с проблемой, что в груви не различаются литералы в одинарных кавычках. Чтобы написать чар приходится писать ('a' as char).
Ого метушатинкой пахнуло. Даже затрудняюсь предположить, чего хорошего можно таким способом сделать, кроме разве что невообразимо сложную загадку оставить коллегам, которым придётся поддерживать код. Скорее всего такой скрипт останется валяться как ненужное легаси которое всем лень выпилить, а его функционал полностью продублируют парой десятков бойлерплейтных классов где-нибудь в другом месте.
guest # 0 ⇈
А кроме того пахнуло @Immutable, @Delegate (джава до сих пор не умеет!!) денепенденси инжекшеном итд
Шуту про скрипт понял -- ок
guest # 0 ⇈
vistefan # 0 ⇈
Читай пояснение к шутке
http://govnokod.ru/25097#comment441571
vistefan # 0 ⇈
На месте iso я бы переименовал Groovy в JavaScript, а то что щас называется JS в ECMAScript, как и должно быть. И пусть петушки, которые хотят делать веб-морды на модном языке, гуглят и читают про метапрограммирование и нормальное ООП, может гляди и говна поменьше станет в мире. Здравый такой хаос.
guest # 0 ⇈
ок
>>и есть ГЦ.
и нет никакого официального механизма убрать объект при определенных событиях.
В итоге люди ваяют костыли вроде
https://github.com/JetBrains/intellij-community/blob/master/platform/util/src/com/intellij/openapi/Disposable.java
vistefan # 0 ⇈
Да в общем-то в итоге люди в общей массе просто спонсируют производетелей железа. Потому что из-за того же ГЦ всё что есть на джава и её потомках ещё и нельзя класть в свап. А пердолиться всем не охота.
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
По морде могут съездить
yet_another_one_shit # 0 ⇈
в Форте вооюще нет ключевых слов. Именно поэтому я за "Forth".
guest # 0 ⇈
Именно поэтому я за "PL/1".
guest # 0 ⇈
http://govnokod.ru/19877
Именно поэтому я за "TeX".
Psionic # 0
vistefan # 0 ⇈
Psionic # 0 ⇈
roman-kashitsyn # 0 ⇈
А не читнуть ли вам стандарт, сударь?
vistefan # 0 ⇈
guest # 0 ⇈
но технически можно
roman-kashitsyn # 0 ⇈
guest # 0 ⇈
Кстати, а как сделать чтобы объекты класса всегда были только конст?
Фаброчиным методов вертать const?
roman-kashitsyn # 0 ⇈
Только делать все поля конст. Только это очень непрактично, проще экспортировать только конст-методы.
К примеру, объекты с конст-полями ты даже толком в вектор не положишь (как мувать?).
guest # 0 ⇈
а как жили до 11?
bormand # 0 ⇈
roman-kashitsyn # 0 ⇈
мувать в другом смысле. Если ты объект из середины удалил, тебе всё подвинуть надо. Это и оператором присваивания сделать можно, без всяких std::move. Только конст-поля тебе этого не дадут сделать.
bormand # 0 ⇈
А мы их const cast'ом уломаем...
roman-kashitsyn # 0 ⇈
bormand # 0 ⇈
roman-kashitsyn # 0 ⇈
когда то, что ты кастишь, изначально не было объявлено как конст. а ещё им volatile выпиливать можно.
bormand # 0 ⇈
7.1.6.1 The cv-qualifiers.
3. A pointer or reference to a cv-qualified type need not actually point or refer to a cv-qualified object, but it is treated as if it does; a const-qualified access path cannot be used to modify an object even if the object referenced is a non-const object and can be modified through some other access path.
Закеширует конпелятор старое значение y и приехали...
bormand # 0 ⇈
bormand # 0 ⇈
7. Note: Dependng on the type of the object, a write operation through the pointer, lvalue or pointer to data member resulting from a const_cast that casts away a const-qualifier may produce undefined behavior.
И кроме того примера никаких подробностей про этот may нет... Примеры в крестостандарте являются нормативными?
guest # 0 ⇈
Зависит от... а от чего зависит?
bormand # 0 ⇈
Steve_Brown # 0 ⇈
Впрочем, ЕМНИП, const методы могут менять поля с модификатором volatile. По-видимому, тогда и компилятор экземпляр класса с volatile полями будет всегда размещать в обычной памяти.
guest # 0 ⇈
см. mutable
>>но ведь компилятор имеет право разместить const в read-only сегменте или в ROM?
да, но причем тут функция?
bormand # 0 ⇈
Он про функции с const, которые навешивают const на *this.
Steve_Brown # 0 ⇈
guest # 0 ⇈
мутабл значит мутабл даже в конст функциях
в общем мутабл всегда
roman-kashitsyn # 0 ⇈
А чего нехорошего-то? Для структур — самое оно, гораздо удобнее, чем писать унылый конструктор по-умолчанию.
Не знал он просто.
guest # 0 ⇈
roman-kashitsyn # 0 ⇈
C++11.
Psionic # 0 ⇈
vistefan # 0 ⇈
А, свежатинка.
roman-kashitsyn # 0 ⇈
Ну так себе, уже 2 стандарта с тех пор вышло. Когда я только начинал писать на плюсцах где-то лет шесть назад, C++11 потихоньку уже внедрялся во многих местах.
Psionic # 0 ⇈
vistefan # 0 ⇈
guest # 0 ⇈
Отлично это работает, хотя и считается пошлостью.
bormand # 0
Осталось дождаться = auto.
ASD_77 # 0 ⇈
guest # 0 ⇈
А еще винде копец, да
guest # 0 ⇈
kir_rik # 0 ⇈
bormand # 0 ⇈
Дык так оно и есть. Скоро весь софт будет на экмаскрипте. Останется сделать аппаратный v8...
vistefan # 0 ⇈
реализовать на чипе amperka-js
guest # 0 ⇈
vistefan # 0 ⇈
(кто-нибудь в курсе истории, как в последнюю минуту переделали процессор бытового компьютера БК-0100ноль11что-то там10, потому что какому-то руководству внезапно показалось, что надо испортить все прежние наработки, и сделать его как ПДП-11, только лучше, якобы для совместимости софта, которая так никогда и не появилась, разумеется?)
guest # 0 ⇈
Как Словения и Словакия
Австрия и Австралия
Иран и Ирак
Швеция и Швейцария
vistefan # 0 ⇈
Джорджия и Грузия
Македония и Македония
Ирландия и Ирландия
guest # 0 ⇈
И Боруссия
>>Джорджия и Грузия
"Russian troops in Georigia, bye-bye CNN" -- шутка 2008 г.
>>Македония и Македония
Македония БЮРМ же.
>>Ирландия и Ирландия
IRA одорбряе такие шутки
vistefan # 0 ⇈
guest # 0 ⇈
vistefan # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
Армия Людова
итд
TOPT # 0 ⇈
guest # 0 ⇈
TOPT # 0 ⇈
guest # 0 ⇈
Оче клёвые
Святая граната
Бесценная ваза минг
итл
TOPT # 0 ⇈
yet_another_one_shit # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
yet_another_one_shit # 0 ⇈
guest # 0 ⇈
Так что я не советовал бы там воровать
UPPERCASE # 0 ⇈
TOPT # 0 ⇈
bormand # 0 ⇈
TOPT # 0 ⇈
3oJIoTou_xyu # 0 ⇈
UPPERCASE # 0 ⇈
Goh # 0 ⇈
guest # 0 ⇈
И что?
yet_another_one_shit # 0 ⇈
guest # 0 ⇈
но я вижу их след в каждом емаксе... в каждом столлмане...
Elvenfighter # 0 ⇈
Да для крестов уже есть LLVM. Годен.
guest # 0 ⇈
bormand # 0 ⇈
Ну его таки можно гонять в режиме интерпретации или JIT'а. Чем не VM?
Steve_Brown # 0 ⇈
guest # 0 ⇈
vistefan # 0 ⇈
guest # 0 ⇈
guest # 0
guest # 0 ⇈
кто-то видел?
vistefan # 0 ⇈
guest # 0 ⇈
Capt. B. Dick
Sgt. Shaved Balls
воу
guest # 0
https://dmkpress.com/catalog/manga/978-5-97060-192-1/
TOPT # 0 ⇈
guest # 0 ⇈
Возможно, вы имели ввиду дисперсии/сатанизма
?
TOPT # 0 ⇈
guest # 0 ⇈
Японцы тоже придумывают, но сложные
TOPT # 0 ⇈
- ограбили, растроился, - пошел посмотрел на карнавал с жопами и сиськами, уже не так растроен.