[Ответить в тред] Ответить в тред

09/07/16 - Новое API для капчи - внимание разработчикам приложений
03/04/16 - Набор в модераторы 03.04 по 8.04
26/03/16 - Конкурс: Помоги гомункулу обрести семью!



[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 154 | 7 | 60
Назад Вниз Каталог Обновить

Языки Аноним 15/05/16 Вск 15:10:30  744159  
14633142308340.jpg (60Кб, 850x400)
У меня накопилось несколько вопросов по поводу нашей с вами работы и индустрии в целом. Большинство, конечно, связаны с языками программирования.

- Почему если я хочу мало-мальски выразительно работать с AST собственной программы, то я обязательно должен подписываться на (ебалу cо (скобками [и больными людьми]))?
- Почему если я хочу нормальную конкуррентность, то в лучшем случае мне парят допотопный CSP (почти сорок лет прошло, блядь!), а вместе с ним и низкоуровневою ебалу с каналами?
- Почему в 2016 году для отладки нет абсолютно ничего лучше брэйкпоинтов и отладочного вывода, а любые инструменты профилирования это обязательно невыносимая ебля?
- Почему ни один язык не решает проблемы интеграции кода и я все еще пишу интеграционные тесты, да и вообще почему вокруг тестов надо творить такую синтаксическую ебалу?
- Почему в 2016 году мы все еще пишем код приемущественно на функциях, когда можно было бы использовать более интуитивные высокоуровневые примитивы?
- Почему обработка ошибок всегда размещается в основной логике кода, не отделяется от него в отдельный слой, а в лучшем случае нам предлагают либо разворачивать эксепшонами стэк, либо if err != nil а-ля Cи?
- Почему ни один язык не предлагает версионирование кода из коробки, а вместо этого нам предлагают ебаться с разношерстными пакетными менеджерами или вендорингом?
- Почему ни один язык не позволяет легко писать GUI, а в лучшем случае нам приходится писать JS-подобный QML и связывать его с портянками на С++?
- Почему off-by-one is a thing и для работы со списками нам не предложили ничего лучше жалких[:слайсов] или нечитаемого синтаксического мусора "для своих" а-ля Haskell?
- Почему CRUD обязывает меня писать либо лапшу, либо замысловатые муторные обертки, а ничего лучше protobuf кодогенераторов не придумали?
- Почему в 2016 году, на уровне кода, нас еще должно ебать какая "там" база данных, а для коммуникации нам не предложили ничего получше допотопного SQL хипстерского JSON, который не слышал о такой вещи, как integrity; почему я еще делаю миграции вручную?

Сумбурно - да, в разнобой - да, возможно немного холиварно - да, но ребята, дальше это говно продолжаться не может!
Аноним 15/05/16 Вск 15:15:57  744163
>>744159 (OP)
>дальше это говно продолжаться не может
Согласен, давай нам свою крутую замену.
Аноним 15/05/16 Вск 15:16:45  744165
>>744163
тред не про это
Аноним 15/05/16 Вск 15:18:57  744171
>>744165
А про что?
Аноним 15/05/16 Вск 15:20:22  744174
>>744171
а про то, что все ужасно
Аноним 15/05/16 Вск 15:21:35  744177
>>744174
Ну мы в курсе, что все ужасно.
Выкладывай свое решение проблем.
Аноним 15/05/16 Вск 15:23:41  744181
>>744177
а может лучше вместе сядем и подресссируем, как все ужасно и подождем пока придет кто-то, кто может решить хотя бы парочку?
потому что я не могу
Аноним 15/05/16 Вск 15:25:59  744184
>>744181
Тебе с этим в /b надо.
Аноним 15/05/16 Вск 15:28:49  744192
>>744184
чего? доска-то о программировании!
Аноним 15/05/16 Вск 15:29:24  744195
>>744192
Но у тебя же про нытье, а не о программировании - с этим в /b.
Аноним 15/05/16 Вск 15:33:14  744206
>>744195
Тебе 15? Мой тред не о нытье, он о нытье на тему программирования. Я считаю, что это соответствует тематике треда, а если ты не разделяешь мое мнение, то можешь отправить жалобу или скрыть тред.
Аноним 15/05/16 Вск 15:35:10  744207
>>744206
Хорошо, успехов тебе.
Аноним 15/05/16 Вск 15:39:39  744212
>- Почему если я хочу мало-мальски выразительно работать с AST собственной программы, то я обязательно должен подписываться на (ебалу cо (скобками [и больными людьми]))?
Может потому что ты жавадебил может и чуть более продвинутый не осиливший Common Lisp?
Аноним 15/05/16 Вск 17:15:02  744291
>>744159 (OP)
1. Homoiconicity не бывает бесплатным. Либо ты получаешь её и пишешь на лиспе, либо не получаешь вовсе.
3. Ниасилил.
5. Предложи. Алсо объекты.
6. Потому что никто не посчитал нужным ебаться с aspect-oriented programming. А все потому, что не так уж и много существует ошибок, которые действительно НУЖНО обрабатывать.
7. Потому что никто не предложил единой семантики версионирования. Каждый дрочит, как он хочет.
8. Такие языки есть, только их никто не использует.
9. Пошел нахуй. Ему таки предложили, а он нос воротит. map наше всё.
10. Быстродействие, универсальность CRUD.
11. Предложили. The Prevayler, Hazelcast, Redis, MongoDB - куча-мала всевозможных подходов.
Аноним 15/05/16 Вск 17:17:22  744292
> Почему если я хочу мало-мальски выразительно работать с AST собственной программы, то я обязательно должен подписываться на (ебалу cо (скобками [и больными людьми]))?
Не обязательно.
> Почему в 2016 году для отладки нет абсолютно ничего лучше брэйкпоинтов и отладочного вывода, а любые инструменты профилирования это обязательно невыносимая ебля?
Perf + flamegraph даже макака осилит.
> Почему в 2016 году мы все еще пишем код приемущественно на функциях, когда можно было бы использовать более интуитивные высокоуровневые примитивы?
Например, какие?
> Почему обработка ошибок всегда размещается в основной логике кода, не отделяется от него в отдельный слой, а в лучшем случае нам предлагают либо разворачивать эксепшонами стэк, либо if err != nil а-ля Cи?
Потому, что ты не осилил монады и эффекты.
> Почему off-by-one is a thing и для работы со списками нам не предложили ничего лучше жалких[:слайсов] или нечитаемого синтаксического мусора "для своих" а-ля Haskell?
Потому, что ты ни осилил ни хаскель, ни APL.
>
Аноним 15/05/16 Вск 17:22:25  744295
>>744159 (OP)
Сколько лет опыта у тебя программировании? Какой lvl вообще?
Аноним 15/05/16 Вск 17:29:41  744301
Ну, трансформация списков мапами - это, конечно, неплохо, но не когда нужно работать с одним элементом. Я думаю, ОП это имел в виду под оффбайоне.
Да и даже не смотря на то, что "90% операций над коллекциями - это мап и фильтер" (на самом деле, ещё и итер), это оставшиеся 10% не отменяет.
Что я хочу этим сказать? Да хуй его знает.
Аноним 15/05/16 Вск 17:34:30  744304
>>744301
Ну есть же итераторы, как в сепепе, с проверкой границ.
Аноним 15/05/16 Вск 17:51:10  744316
Я делаю свой язык, попробую предложить парочку решений:

>- Почему если я хочу мало-мальски выразительно работать с AST собственной программы, то я обязательно должен подписываться на (ебалу cо (скобками [и больными людьми]))?
Это, на самом деле, скорее хорошо, чем плохо. Подумай только, появись полная рефлексия типа как в лиспе, где-нибуть в С++ — это же был бы полный пиздец. Мало того, что и так читать нереально, так еще и это. Проще говоря — это проблема читабельности. Метапрограммирование это классно, когда ты можешь сделать какой-то уютный макрос и съэкономить 20 строчек кода в пяти местах = 100 строчек (возможно больше, на росте базы), но это очень плохо, когда вас (программистов) чуть больше трех.
>- Почему если я хочу нормальную конкуррентность, то в лучшем случае мне парят допотопный CSP (почти сорок лет прошло, блядь!), а вместе с ним и низкоуровневою ебалу с каналами?
Потому что большинство конкуррентных задач — это в лучшем случае parallel map или pub/sub, а для них ничего большего обычно не надо.
>- Почему в 2016 году для отладки нет абсолютно ничего лучше брэйкпоинтов и отладочного вывода, а любые инструменты профилирования это обязательно невыносимая ебля?
Потому что отладка — это сложно, особенно в средах без интерпретатора. А что ты вообще хочешь?
>- Почему ни один язык не предлагает версионирование кода из коробки, а вместо этого нам предлагают ебаться с разношерстными пакетными менеджерами или вендорингом?
Потому что версионирование это не проблема кода, а его распространения (packaging, distribution) и код этим заниматься не должен. Ты же не спрашиваешь хуле Perl не деплоит твой код в облако? Для этого есть докер.
>- Почему ни один язык не позволяет легко писать GUI, а в лучшем случае нам приходится писать JS-подобный QML и связывать его с портянками на С++?
Потому что там где нужен GUI есть свои специфические и очень качественные решения для проектирования, а если очень хочешь кросс-платформенности, то твой выбор это Qt, что поделать.
>- Почему off-by-one is a thing и для работы со списками нам не предложили ничего лучше жалких[:слайсов] или нечитаемого синтаксического мусора "для своих" а-ля Haskell?
Потому что off-by-one это не синтаксическая, а психологическая проблема. Пытаться ее решать синтаксически — глупо и очень неэффективно в рантайме.
Аноним 15/05/16 Вск 17:55:54  744321
>>744295
27 лвл; 8 лет в индустрии, работал как в больших компаниях (dropbox), так и в стартапах (grammarly, например).
Аноним 15/05/16 Вск 18:08:37  744335
>>744159 (OP)
>Почему в 2016 году, на уровне кода, нас еще должно ебать какая "там" база данных, а для коммуникации нам не предложили ничего получше допотопного SQL
Потому как ты самоуверенный быдлокодер-дебилойд, неспособный даже осознать суть проблем и сформулировать их. Тебя, видимл, как местных школьников что-то "бесит", но что и почему ты понять не уже можешь (ума-то не хватает).
Аноним 15/05/16 Вск 18:23:51  744343
>>744335
Суть проблемы очевидна. ORM это так или иначе костыль вокруг невозможности прозрачно маппить схему {или ее отсутствие} на какие-то языковые модели. Но с ORM все отлично только в хеллоуворлдах. А вот когда ты переходишь с одной базы на другую, оказывается, что твои foreign keys стали как-то слишком медленными или где-то что-то проебалось или банально нет необходимой фичи (ахахах лох).

Вот ты можешь сейчас взять и безболезненно перевести свое приложение с MySQL на Postgres или с MongoDB на OrientDB, например? Не сможешь. А почему меня, как разработчика приложения, это должно ебать? Пускай базами данных и их поддержкой занимаются database engineers.
Аноним 15/05/16 Вск 18:24:44  744345
>>744343
>почему меня, как разработчика приложения, это должно ебать
понятно...
Аноним 15/05/16 Вск 18:26:40  744346
>>744345
Я считаю, что приложение должно быть МАКСИМАЛЬНО абстрагировано от низлежащей архитектуры (в том числе, от баз данных). Да, я адепт PaaS-driven разработки и да, я горжусь этим.
Аноним 15/05/16 Вск 18:42:55  744358
>>744316
>Потому что отладка — это сложно, особенно в средах без интерпретатора. А что ты вообще хочешь?
Добавлю ещё: в любом многопоточном/асинхронном коде почти любой отладчик становится бесполезным. Энджой йоу принтлн.
>Потому что там где нужен GUI есть свои специфические и очень качественные решения для проектирования, а если очень хочешь кросс-платформенности, то твой выбор это Qt, что поделать.
А есть что-то качественнее кути? Есть ещё кросплатформенный гтк с ногами и сишным интерфейсом в 2016 из линуксов. Ещё есть винапи (ыыыы). Нормальный гуй из коробки предоставляет только эпл.
Аноним 15/05/16 Вск 18:51:54  744369
>>744343
Что до твоих рассуждений, что тебя мол что-то там волновать в базе не должно, так они выдают в тебе малограмотного безответственного человека. Целостность данных это не забота каких-то там других людей, а целиком и полностью твоя. Как и целостность данных в оперативной памяти рантайма твоего кода - то же самое.

Дело не только в реляционной модели. Элементарно, начинать нужно уже с того, что у твоего "языка приложения" всегда иной набор базовых типов чем у БД. У БД набор базовых типов (а часто и операций над ними) как правило шире. (но макаки конечно об этом не знают всех их познания заканчиваются на varchar, int, double, decimal - внезапно, это то, что orm умеет приводить к).

Что до воплей на SQL. Без SQL ты не сможешь решать те задачи которые нужно. SQL не просто формулирует простой вопрос к хранилищу, а позволяет делать крайне нетривиальные манипуляции и выводы на основе данных, и в императивном стиле ты это не напишешь. Если ты используешь БД через orm-обертку, то о возможностях СУБД у тебя представление мягко говоря частичное. ORM-это вообще мусор, он ограничивает тебя 1% возможностей СУБД и создает сотни часов дополнительной работы. Что до SQL как языка, то любой язык запросов решающий те же задачи получится таким же, может чуть моднее, где-то чуть приятнее, но суть то же.

Часть ненависти к SQL у тупарей (независимо от их опыта и возраста) связана с тем что основном языке он чужероден и представлен строкой. Можно ли сделать язык запросов частью синтаксиса основного языка - да (полу-попытки были - тот же linq). Можно ли гонять не строку а AST - да. Можно ли пойти дальше и строить часть query plan'a на вызывающей стороне (которые зачастую масштабировать проще) разгрузив этим образом машины с БД - да. Но никто не хочет вкладываться. Да и макаки опять не поймут, если это не гугл конечно предложит.

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

Были разработки систем представляющих собой язык/платформу программирования общего (почти общего) назначения и нормальную реляционную базу данных в одном целом. (Никаких противоречий, как привыкли думать хомяки, между этими двумя мирами нет). Названия к сожалению не помню. Оно не взлетело. Но судьба подходов и технологий определяется не их качеством/правильность/удобством, а любыми другими причинами.
Аноним 15/05/16 Вск 19:03:06  744383
бамп
Аноним 15/05/16 Вск 19:05:24  744388
>>744159 (OP)
Хуиты какой-то понаписал. Я так тоже могу.
Где, хотя бы, примеры того как "должно быть" с твоей точки зрения? Как эти "проблемы" должны решаться? Как-нибудь? Да иди ты нахуй!
Аноним 15/05/16 Вск 19:14:10  744394
>>744159 (OP)
Почему все дрочат на гомоиконность?
В чем ее профит?
Аноним 15/05/16 Вск 19:16:54  744395
>>744394
Ни в чем. Прикольно, синдром школьника, изучающего программирование.
Аноним 15/05/16 Вск 19:34:36  744411
>>744395
Но лисперы это же бородатые дяди, а не школьники.
Аноним 15/05/16 Вск 19:47:24  744422
>>744316
>это же был бы полный пиздец
А все потому что любое метапрограммирование должно быть только на уровне отдельного модуля, и никак не влиять на все внешнее окружение.

Грубо говоря, хочу я чтобы литерал [] инициализировался не каким-то дефолтным массивом, а специальной коллекцией -> подключаю какой-то модуль реализующий перегрузку -> при этом эта перегрузка будет работать только в том модуле, где была инициализированна, или вообще только в той области видимости.

Короче говоря, любые макро\мета извращения должны затрагивать только определенную часть кода, и никак не влиять на остальную.
Аноним 15/05/16 Вск 19:53:47  744428
14633312274240.jpg (79Кб, 640x480)
>>744369
Ты правильно подметил, что куча неудобств доставляет не сам SQL (в консоли БД например), а кошмарные способы взаимодействия с кодом.


Сам по себе SQL очень хорошо подходит для генерации отчетов. Если отчет сводится к фильтрации-сортировке-группировке множеств - идеально. С рекурсивными CTE - еще и деревья можно обрабатывать, не особо включая мозг. Всунув поверх этого минимальных размеров постобработку на какой-нибудь функциональщине, можно сделать почти любой отчет, пришедший в голову свихнувшимся на Excel выпускникам нархоза, работающим в минстате, минфине и МНС.

Но когда доходит до процедурных расширений, API между СУБД и клиентскими приложениями или каких-нибудь вещей, которые забыли вовремя добавить в стандарт - начинается полная, немыслимая жопа.


http://metaclass.livejournal.com/800013.html
Аноним 15/05/16 Вск 20:12:58  744446
>>744369
Ты много написал. Я буду краток.
>Целостность данных это не забота каких-то там других людей, а целиком и полностью твоя
Нет, пускай этим занимается провайдер PaaS или мой database engineer.
>целостность данных в оперативной памяти рантайма твоего кода
Полностью моя.
>Дело не только в реляционной модели...
Зачем ты мне это рассказываешь? Я изучал РМД в университете, ты вряд ли что-то новое мне расскажешь.
>SQL не просто формулирует простой вопрос к хранилищу, а позволяет делать крайне нетривиальные манипуляции и выводы на основе данных, и в императивном стиле ты это не напишешь
Ой, а ну наведи мне хотя бы три примера таких "нетривиальных анти-императивных задач". Максимум ты встретишь подобное на собеседованиях, за 8 лет опыта работы я не встречал ничего "нерешаемого" императивно ни разу.
>сделать язык запросов частью синтаксиса основного языка
>Можно ли гонять не строку а AST
Так нормальные ORM и работают. Только ORM должен быть частью языка (максимум — стандартной библиотеки), а не как sqlalchemy, например.
Аноним 15/05/16 Вск 20:13:35  744449
>>744394
В том, что ты можешь нести конструкции из других языков в свой.
Аноним 15/05/16 Вск 20:14:49  744450
>>744422
>любое метапрограммирование должно быть только на уровне отдельного модуля
все закончится на том, что твои извращения буду вынасить в отдельный модуль а-ля meta_tools и использовать его везде по кодбазе, чтобы не нарушать однородность кода.
Аноним 15/05/16 Вск 20:15:21  744451
>>744450
Явное лучше неявного.
Аноним 15/05/16 Вск 20:16:31  744452
>>744450
s/буду вынасить/будут выносить
Аноним 15/05/16 Вск 20:17:20  744453
>>744451
А что ты подразумеваешь под явным и неявным? Определения в лиспах (почти везде) тоже достаточно явные и подчиняются области видимости.
Аноним 15/05/16 Вск 20:26:11  744457
>>744453
Я не знаком с лиспом, если так, то славно.

Я вот примерно о чем.
Допустим я работаю в каком то модуле по большей части с массивом символов. У меня их много и они везде, что мне удобнее было бы иметь под них литерал. А еще лучше, чтобы литерал строки '' инициализировался по факту не в строку, а в массив символов.

Я явно подключаю какой-нибудь мета-модуль, котрый перегружает мне литерал, и дале все мои 'ololo' это не строка, а массив символов.
Но только в пределах области видимости этого модуля.

Ну или например я хочу, чтобы разные URI инициализировались в объекты в соотвествии со схемой. Я явно объявляю какой нибдь специальный литерал, и далее мои <file:/etc/some/file.ext> инициализируется в объект класса File с нужным path
а <http:google.com> <socket:/ololo> соотвественно HTTP и Socket.

Аноним 15/05/16 Вск 20:30:19  744458
>>744446
>Только ORM должен быть частью языка
ORM не должен быть частью языка. ORM не должен быть вообще. Нужно сделать так, чтобы мапить не пришлось. Там нет противоречий никаких, это миф. Так не делают не потому, что это неправильно, а потому, что развивалось всё независимо, и сейчас не хотят вкладываться в создание франкенштейна.

>Ой, а ну наведи мне хотя бы три примера таких "нетривиальных анти-императивных задач".
Ясно, человек не видевший SQL-запроса больше двух экранов. Самоуверенный даун из "веба".
Справедливости ради императивно, конечно, всё возможно можно сделать. На FoxPro, на монге...
>Так нормальные ORM и работают.
Что? Отправляют в соединение не SQL, а сериализованное дерево что ли? Прости, не слышал о таком. Хорошо, если уже сделали.
Аноним 15/05/16 Вск 20:34:56  744460
>>744457
1.То, что ты предлагаешь, скорее всего сломает семантику языка и это будет нереально подсвечивать нетьюринг-полным скриптам подсветки синтаксиса, например. А таких 95%.

2. Особого выиграша между new File("/etc/some/file.ext") и <file:/etc/some/file.ext> нет, только вот второе читается хуже и непонятно тому, кто не в курсах твоих мета-извращений.
Аноним 15/05/16 Вск 20:38:53  744463
>>744458
>человек не видевший SQL-запроса больше двух экранов
Восемь лет делаю веб-сервисы и сетевые приложениях, ни разу не встречал SQL запросы длиной больше 300 символов условно.
>Самоуверенный даун из "веба"
А ты занимаешься охуенно редкими и специфичными задачами? Тогда отлично, но мы сейчас не про охуенно редкие задачи, а про 99% решений в индустрии — CRUD, SaaS, объектные интерфейсы.
>Отправляют в соединение не SQL, а сериализованное дерево что ли?
Да нет, ORM берет твое дерево запроса и генерирует по нему (за константное время, кстати) SQL, получает ответ и по этому же дереву запроса строит ответ в заданной модели.
Аноним 15/05/16 Вск 20:40:34  744465
>>744446
>Целостность данных это не забота каких-то там других людей, а целиком и полностью твоя
>Нет, пускай этим занимается провайдер PaaS или мой database engineer.
Два чаю господину. Вся эта форейн-кий параша с констрейнтами и прочим консистенси бредом из 80х - задача других людей и разработчика вообще заботить не должно. Она нужна до какой-то степени, но это уже сфера ответственности специально обученных этой дрисне специалистов.
Аноним 15/05/16 Вск 20:42:05  744466
>>744463
>Да нет, ORM берет твое дерево запроса и генерирует по нему (за константное время, кстати) SQL
Маня, я знаю, как это работает. Не считай других за дебилов, особенно когда ты сам настолько туп, что даже не понял, что я имел ввиду.
Аноним 15/05/16 Вск 20:46:29  744467
>>744159 (OP)
Чёт я ни один из пунктов не понял совсем. Не зря говорят что правильно сформулированный вопрос содержит половину его решения. А здесь только "хочу больше и круче непонятно где и непонятно как".
Философия SQL или причина популярности NoSQL. Аноним 15/05/16 Вск 20:47:58  744469
14633344784060.jpg (116Кб, 438x604)
Феномен NoSQL уникален. Люди отказываются от ACID, люди отказываются от высокоуровневого языка для описания своих действий, от отсутствия избытычности (третья нормальная форма) в пользу чего?

NOSQL выходит на сцену
В пользу крайне примитивного хранилища данных, в котором ничего вышеперечисленного нет, и при работе с которым приходиться вникать в низкоуровневые детали реализации, а также проектировать с учётом ограничений хранилища.
На первый взгляд, сплошные неудобства.
На второй взгляд - адепты NoSQL скажут, что на не нужны третья нормальная форма и ACID, зато нужна производительность.

В ответ на предложение заняться оптимизацией запросов, настройкой кешей либо (увы) денормализацией данных адепты NoSQL обычно:
1) не знают или знают поверхностно SQL хранилища
2) отмахиваются "Зачем? Я просто возьму классную NoSQL xxx, и в ней этого не будет".

Те, кто смогли в разговоре внятно обосновать причину выбора NoSQL::
1) Знают SQL и крутили его для решения задачи
2) Указывают на конкретные недостатки решения в SQL решении, способы решения этих недостатков в NoSQL хранилище, а также регрессии и издержки такого решения в NoSQL.

Но активней всего агитируют за NoSQL как раз люди не понимающих этих вопросов!
Данный феномен казался мне:
1) вопиющим дилетантством (люди не владеют предметом == SQL, чтобы делать такой выбор)
2) саботажом производственных норм и целей разработки (вместо решения задачи люди играют в NoSQL).

Кажется, теперь я понял причину данного феномена.

Структуры команды при реализации проекта с использованием SQL
Я не рискну проводить таксономию SQL и NoSQL.
Это обширная и сложная тема, достаточно сослаться на статью Майка Стоунбрейкера.

Давайте зайдём со стороны... менеджмента.

Каким образом выглядит разработка прикладных программ c использованием SQL баз?

Язык SQL позволяет развязать собственно приложение (отражение предметной области) от способа хранения данных.
При таком раскладе у нас есть три обязанности:
1) Анализ предметной области и реализация её в коде приложения
2) Анализ структур данных приложения и реализация их в виде схемы базы.
3) Запросы к базе со стороны приложения.
4) Настройка базы под нужды приложения, оптимизация её (индексы, партицирование, кластеризация), денормализация базы как крайная мера.

При таком подходе обычно нужны:
1) Аналитик
2) Разработчик
3) DB-developer

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

SQL является таким универсальным посредником между DB и разработчиком с аналитиками. В этом смысле предметная область на хранилище не влияет - предметная область фиксируется в виде схемы базы, а уж от неё и запросов начинает свою работу DBA.

Структуры команды при реализации проекта с использованием NoSQL
Каким же образом выглядит разработка с использованием NoSQL?

NoSQL хранилище требует отражения предметной области и структуры приложения в терминах хранилища.
Роли смываются!

Нету универсального посредника - SQL, который являлся lingua franca для различных частей команды!

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

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

Взрыв различных ORM - не случайность, а закономерное следствие отказов от DBA.
Первое, что сделали разработчики приложений - сделали ORM.
Второе, что они сделали - придумали NoSQL.

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

Анализ популярности NoSQL
Плох тот солдат, что не мечтает стань генералом. Разработчики приложений сталкиваются с проблемами производительности баз, и ищут альтернативы. Их уровень компетенции РЕДКО включает в себя знания узкоспециализированных DB-разработчиков, и как следствие они в большинстве случаев не могут решить проблемы производительности приложений, выходящие за рамки "банальных" (индексы по Primary Key).

Таким образом, решая проблему "на своём" уровне, разработчики хотят видеть структуру хранилища отражающую их предметную область, и имеющую минимальный overhead.
Теперь вы понимаете?

Вопросы резервного копирования данных, их целостности, работа хранилища в условиях нехватки памяти, параллельные запросы - эти вопросы разработчики НЕ ПОНИМАЮТ ДО КОНЦА, и не в состоянии их эффективно решить.

Будем реалистами - специлисты широкого профиля редко хорошо знают НЕСКОЛЬКО областей одновременно.
Те, что владеют DB-разработкой обычно РУГАЮТ NoSQL.
Те, что НЕ владеют DB-разработкой НАДЕЯТСЯ на NoSQL.
Я могу пересчитать по пальцам одной руки своих знакомых, которые ИСПОЛЬЗУЮТ NoSQL, и ПОНИМАЮТ почему они это делают.

Кто виноват?
В управлении IT-проектами есть совершенно печальная черта - во всяком случае, я её наблюдал на работе, у знакомых в проектах, книгах и статьях - разработчики не понимают целей разработки и роли в команде.
Со свойственным им максимализмом они пытаются охватить ВСЁ.

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

Вместо использовании молодых энтузиастов (как правило специалистов в одной области) в мирных целях, менеджмент зачастую спускает на тормозах вопросы выбора архитектуры без проведения нормального анализа.
Куда соблазнительней поверить в модные тренды, чем забивать голову сложными вопросами, не так ли?

Применимость инструментов
Все мы мечтаем сделать супер-стартап и продать его за мультимиллионы гуглю.
Но пока мы занимается коммерческой разработкой оперденей на заказчика - и должны решать ЕГО проблемы, а не собственные амбиции.

Проекты можно условно классицировать так:

1) Малобюджетные сайты - бюджет пара тысяч долларов
2) Средние программы автоматизации бизнес-процессов - "опердени" - бюджет обычно до десяти тысяч долларов
3) Биллинг, телеком - бюджет сильно больше 10000 долларов
4) Высоконагруженные сайты вырастают из стартапов, бюджет не определён.

Для каждой группы - свои инструменты.
Для (1) и (2) и (3) важным критерием является предсказуемость, а как следствие разумным выбором являются "классические" инструменты, разделяющие задачу на части и снижающие риски vendor-lock'а на разработчике - т.е. SQL.

Для (4) никакие рецепты не работают - зависит от проекта и его требований.

Ниша NoSQL - высоконагруженные сайты, вырастающие из стартапов.

Выводы
SQL изначально создавался как язык, разделяющий вопросы хранения данных и запросы по манипуляции ими.
Разработка с использованием SQL подразумевает как минимум четырёх людей:
1) Менеджер
2) Архитектор
3) Разработчик приложения (совмещающий функции аналитика или делящий их с архитектором)
4) DB-разработчик

Последнего незаслуженно забывают, и получают проблемы производительности.

NoSQL данную проблему НЕ РЕШАЕТ. Компетенция специалиста в хранилищах данных от простого выбора NOSQL НЕ ПОЯВИТСЯ.

Если вы не согласны - значит, вы можете написать по памяти CAP-теорему, сформулировать третью нормальную форму, и слово vector-clock для вас далеко не пустой звук. В противном случае - вам просто нравится играть в NoSQL на деньги работодателя, а ваш менеджмент не понимает или не хочет решать проблему.

В конце-концев эффективность бизнеса - проблема владельца и управления, а не рядового специалиста, коим вы являетесь.

http://zamotivator.dreamwidth.org/1472614.html
Аноним 15/05/16 Вск 20:50:09  744472
>>744466
Да ты просто какие-то глупости для девятиклассников с серьезным говоришь, как мне тебя восприниматься всерьез?
Аноним 15/05/16 Вск 21:02:13  744478
>>744472
Вот у меня мышление где-то на уровне 9 класса и застряло, да. Я не виноват в твоем тугоумии и узости мышления.
Аноним 15/05/16 Вск 21:04:57  744482
>>744478
>У меня
>У тебя
фикс
Аноним 15/05/16 Вск 21:06:52  744483
>>744469
зачем ты этот высер от застрявших в прошлом веке SQL пенсионеров принес? неспособных освоить NoSQL и застрявших на устаревших технологиях ничего не спасет
Аноним 15/05/16 Вск 21:07:38  744485
>>744478
>>744482
LOL
Аноним 15/05/16 Вск 21:08:38  744486
>>744485
Да я тож посмеялся, но это не отменяет того факта, что ты макака без мышления.
Аноним 15/05/16 Вск 21:09:36  744487
>>744486
Если ты не понял, я не собираюсь поддерживать этот диалог.
Аноним 15/05/16 Вск 21:09:42  744488
>>744463
>человек не видевший SQL-запроса больше двух экранов
>Восемь лет делаю веб-сервисы и сетевые приложениях, ни разу не встречал SQL запросы длиной больше 300 символов условно.
А их и не бывает.
Аноним 15/05/16 Вск 21:11:44  744489
>>744487
>Если ты не понял, я не собираюсь поддерживать этот диалог.
Так та и не можешь его продолжить, ведь о предмете разговора у тебя, как выяснилось, никакого представления-то вообще нет. Да и позиции тоже никакой нет.
Тред можно закрывать.
Аноним 15/05/16 Вск 21:19:16  744499
14633363568650.jpg (47Кб, 604x453)
>>744483
You mean неспособных освоить уринотерапию и заговоры вместо доказательной медицины?
Аноним 15/05/16 Вск 21:31:55  744521
Я так и не понял, какие-такие примитивы предлагает ОП вместо функций?
Аноним 15/05/16 Вск 21:42:29  744534
>>744521
Процедуры.
Аноним 15/05/16 Вск 21:45:59  744538
>>744534
И чем это будет отличаться от функций?
Процедура точно так же имеет имя и может принимать аргументы.
Аноним 15/05/16 Вск 22:00:49  744563
>>744521
Стрелки наверное
Аноним 15/05/16 Вск 22:00:52  744564
>>744159 (OP)
> - Почему если я хочу мало-мальски выразительно работать с AST собственной программы, то я обязательно должен подписываться на (ебалу cо (скобками [и больными людьми]))?
те в рантайме надо? ну дык в мейнстрим платформах (дотнет, явка) рефлексия более мене норм
или на этапе трансляции? так тоже в мейнстриме - clang+llvm для сишки с крестами, roslyn для дотнет..
ну а если нужен доступ как в лиспсемействе, то без ебанутой семантики и синтаксиса, извини, не обойтись
Аноним 15/05/16 Вск 22:05:44  744573
>>744563
Какие стрелки? Лямбды? Это те же функции.
Аноним 15/05/16 Вск 22:13:49  744582
14633396297730.png (301Кб, 599x1016)
>>744573
Аноним 15/05/16 Вск 22:28:17  744598
>>744564
>ну а если нужен доступ как в лиспсемействе, то без ебанутой семантики и синтаксиса, извини, не обойтись
вот в этом и беда
Аноним 15/05/16 Вск 22:33:58  744608
>>744499
Неосилятор mongo? Как там за бортом жизни?
Аноним 15/05/16 Вск 22:38:25  744614
>>744598
нет, не в этом
а в том что лисп-макросы рушат доступ к ast
Аноним 15/05/16 Вск 23:56:06  744698
>>744614
ты адепт чего?
Аноним 16/05/16 Пнд 01:56:53  744761
>>744159 (OP)
>- Почему если я хочу мало-мальски выразительно работать с AST собственной программы, то я обязательно должен подписываться на (ебалу cо (скобками [и больными людьми]))?
Tcl>>744159 (OP)
>- Почему в 2016 году мы все еще пишем код приемущественно на функциях, когда можно было бы использовать более интуитивные высокоуровневые примитивы?
Каждой предметной области по edsl'ю! Алан Кей с команой в этой области копает. Гугли STEPS, OMeta.
>>744159 (OP)
>- Почему ни один язык не позволяет легко писать GUI, а в лучшем случае нам приходится писать JS-подобный QML и связывать его с портянками на С++?
Tcl/Tk
Аноним 16/05/16 Пнд 17:23:55  745118
ОП, попробуй smalltalk-среды, они отчасти решают некоторые из поднятых тобой вопросов (например, нормальное версионирование каждой единицы кода из коробки).

А в остальном понимаю твое нытье и присоединяюсь.
Аноним 16/05/16 Пнд 17:50:40  745137
>>744698
ml-семейство
Аноним 16/05/16 Пнд 17:51:50  745138
>>744369
>Оно не взлетело
Очень даже взлетело, и было дико популярно в 90-е, но потом было задушено майкрософтом.
https://ru.wikipedia.org/wiki/Visual_FoxPro
Аноним 17/05/16 Втр 12:29:36  745691
>>744761
Так не гуглится ничего. Скинь каких новостей по STEPS.
Аноним 17/05/16 Втр 22:13:56  746267
Бамп.
Аноним 17/05/16 Втр 23:30:24  746360
>>744343
> Вот ты можешь сейчас взять и безболезненно перевести свое приложение с MySQL на Postgres или с MongoDB на OrientDB, например? Не сможешь.
Эмм.. вообще-то могу
Аноним 18/05/16 Срд 01:24:32  746434
>>744159 (OP)
Всё правильно написал.
Есть две проблемы
- общественный характер производства и частнокапиталистическая форма присвоения продуктов труда. Т.е. грубо говоря каждый тащит одеяло на себя и вся индустрийка высрать ничего не может. До того момента конечно когда зайдёт действительно крупный монополист, потому что развивать тулзы не прибыльно. Но минус этого решения в том что всю армию кодерков сложно будет трудоустроить.
- образование. Частично исходит из первой проблемы. Пока дауны бросаются жопой на любую игрушку и не имеют собственного мнения конторка может форсануть своё говно и стричь купоны. Нужно прививать нормальные подходы.

В итоге имеем миллионную армию говноделов которые дальше своего болота не вылезают и каждый наступает на одни и те же грабли. Масштабы такие ахуительные что в пределах одного стойла не могут документировать для своих же или хотябы погуглить как пользоваться тулзой чтобы неделю не писать велосипед. Если это конечно не меры по job security, что исходит из первого пункта
Аноним 18/05/16 Срд 01:30:13  746436
>>744608
как там крестишься перед тем как делаешь дата миграцию ?
транзакции уже навелосипедил ?
как там джоины в аппликации ? есть гигабитный канал ?
Аноним 18/05/16 Срд 01:35:21  746437
>>744343
Да чего же ёбнутый дебил это писал. Блядь это даже не тролинг или дилетанство это блядь просто рак. Блядь ведь с такими приходится работать это же пиздец какой то. Мне даже лень разбираться этот ли пост или вся цепочка такая но это пиздец.

Выход видимо просто окуклиться и просто писать конкретные решения пока есть адекваты рядом. Пускай из 20 человек на всю планетку но этого достаточно
Аноним 18/05/16 Срд 08:01:56  746523
>>746437
Да пошел ты нахуй!
Аноним 18/05/16 Срд 10:36:51  746560
>>744159 (OP)
>Почему если я хочу мало-мальски выразительно работать с AST собственной программы, то я обязательно должен подписываться на (ебалу cо (скобками [и больными людьми]))?
Потому что хуита со скобочками это и есть AST. Вот так вот оно выглядит, это ваше AST. Сделаешь AST для программы не на лиспе - будет выглядеть точно так же. А если сделаешь что-то типа DOM, то всё равно не избежишь мыслей о лиспе, потому что твой AST будет превращаться в код на лиспе одним обходом дерева. То есть получится что ты написал транслатор из своего языка в лисп, только по религиозным причинам не дописал один метод на 20 строчек и поэтому лишил своё AST удобного текстового представления. AST без скобочек на получится, потому что, AST это дерево, и его запись должна отражать структуру этого дерева. Лисп гомоиконичен, это значит что структура его кода подобна структуре его AST. А знаешь как выглядит структура AST других языков? Точно так же! Хочешь работать с AST - привыкай к скобочкам.
Вот, вроде доходчиво объяснил.
>Почему если я хочу нормальную конкуррентность, то в лучшем случае мне парят допотопный CSP (почти сорок лет прошло, блядь!), а вместе с ним и низкоуровневою ебалу с каналами?
По-видимому ты включаешь в понятие "нормальную конкуррентность" и "в лучшем случае" столько, что отсекаешь все более современные высокоуровневые решения. Пока ты не объяснишь что ты имел в виду ответить на твой вопрос невозможно.
>Почему в 2016 году для отладки нет абсолютно ничего лучше брэйкпоинтов и отладочного вывода, а любые инструменты профилирования это обязательно невыносимая ебля?
ВМ типа JVM или CLR позволяют остановившись на брекпоинте добраться до каждого байтика пользовательских данных, просто клацая мышкой по полям классов. Потому что все "отладочные символы" присутствуют в программе в виде метаданных классов. Мало?
>Почему ни один язык не решает проблемы интеграции кода
Потому что это задача не уровня языка.
>я все еще пишу интеграционные тесты
Потому что ты не пишешь верифицированного кода или хотя бы контрактов.
>почему вокруг тестов надо творить такую синтаксическую ебалу?
В смысле?
>Почему в 2016 году мы все еще пишем код приемущественно на функциях, когда можно было бы использовать более интуитивные высокоуровневые примитивы?
Например?
>Почему обработка ошибок всегда размещается в основной логике кода, не отделяется от него в отдельный слой
Потому что тогда возникнет задача синхронизации слоёв, усложнится редактирование кода и поток управления нельзя будет проследить просто окинув взглядом исходник.
>Почему ни один язык не предлагает версионирование кода из коробки, а вместо этого нам предлагают ебаться с разношерстными пакетными менеджерами или вендорингом?
Потому что язык и версионирование это ортогональные вещи, не? Не совсем понятно что ты хочешь.
>Почему ни один язык не позволяет легко писать GUI, а в лучшем случае нам приходится писать JS-подобный QML и связывать его с портянками на С++?
Если ты жалуешься на explicit complexity, то приведи примеры того как язык усложняет то, что можно было бы сделать проще. Если у тебя проблема с implicit complexity то научись с этим жить.
>Почему off-by-one is a thing и для работы со списками нам не предложили ничего лучше жалких[:слайсов] или нечитаемого синтаксического мусора "для своих" а-ля Haskell?
От байтоёбли и императивности. 99% кейсов работы со списками сводятся к map, filter и reduce. Использовать их было бы проще, надёжнее, яснее и оптимизируемее. Но для этого надо иметь в языке лаконичный синтаксис для анонимных функций, а от этого у байтоёбов рвётся шаблон и болит голова. Ну да всё равно прогресс движется. Вон даже в джаву лямбды завезли потому что почуяли необходимость автораспараллеливания.
>Почему CRUD обязывает меня писать либо лапшу, либо замысловатые муторные обертки, а ничего лучше protobuf кодогенераторов не придумали?
Ты видимо представляешь CRUD как какую-то конкретную задачу. Я нет.
>Почему в 2016 году, на уровне кода, нас еще должно ебать какая "там" база данных, а для коммуникации нам не предложили ничего получше допотопного SQL хипстерского JSON, который не слышал о такой вещи, как integrity; почему я еще делаю миграции вручную?
Потому что ты не осилил ORM?
Аноним 18/05/16 Срд 11:04:57  746579
>>746560
>Потому что хуита со скобочками это и есть AS
Хуйню несёшь. Ни в одном аст нет тех скобочек, о которых ты говоришь.
>почуяли необходимость автораспараллеливания
Забавно, как функци-анальщики везде носятся со своим автораспараллеливанием, когда в реальности есть окамл, который синглотредовый со своим аналогом ГИЛа, а автоматически распараллеливать в это время пытаются лишь крестокомпиляторы.
инб4 фешарп.
Он не автоматически. Это либа. Она доступна и из других дотнетовских языков.
>Лисп гомоиконичен
Это значит, что пишут на нём гомосеки, которые молятся на него как на икону и зазывают морально не созревших людей в свою секту. Что мы по твоему, например, посту и видим.
Аноним 18/05/16 Срд 11:10:05  746584
>>746560
>Потому что хуита со скобочками это и есть AST.
А почему не json? Или еще какое представление деревьев текстом?
Но вообще AST типизирована, а лиспохуита - нет, это основное отличие.
Аноним 18/05/16 Срд 11:50:43  746607
>>744159 (OP)
1 - Наследие до опенсорсной эпохи. Исторически сложилось, что компилятор и средства работы с исходниками - закрытая для разработчиков вещь. Соответственно, кроме лиспа их нигде и не было.
Аноним 18/05/16 Срд 12:04:47  746613
>>746579
>Ни в одном аст нет тех скобочек, о которых ты говоришь.
Что насчёт этого AST: (+ 1 (* 2 3)) ?
>>746584
>Но вообще AST типизирована, а лиспохуита - нет, это основное отличие.
Эксперта за версту видать. Ну давай, неси пруфы, что untyped AST это не AST.

Аноним 18/05/16 Срд 12:12:25  746615
>>746613
>Что насчёт этого AST
Это не AST, это строка текста.
Аноним 18/05/16 Срд 12:15:22  746619
14635629225800.png (23Кб, 379x408)
>>746615
А это надо полагать не AST, а картинка?
Аноним 18/05/16 Срд 13:27:13  746680
"- Почему в 2016 году для отладки нет абсолютно ничего лучше брэйкпоинтов и отладочного вывода, а любые инструменты профилирования это обязательно невыносимая ебля?"
привет от Xrebel даун
Аноним 18/05/16 Срд 14:38:13  746751
>>746584
>А почему не json? Или еще какое представление деревьев текстом?
потому что код в лиспе - это скобочки
но и ast имеет ту же форму - скобочки
поэтому с ast собственной программы работают с теми же средствами что и с самой программой
Аноним 18/05/16 Срд 14:52:09  746762
>>746619
Давай, ты сначала перестанешь путать данные и их представление, а потом мы снова об этом поговорим?
>>746751
Потому что код - набор байтов.
Но и картинка имеет ту же форму - набор байтов.
Поэтому кодить надо в графических редакторах.
Аноним 18/05/16 Срд 14:58:19  746772
>>746762
Мальчика-дауна мама первый раз привезла на море.
- Смотри, сынок, море.
- Где, мама?
- Да вот же оно, сынок!
- Где, мама?
- Да вот же, вот оно!!!
- Где, мама?
Мама берет его за руку, подводит к морю, и окунает его голову в море.
- Ой, что это, мама?
- Это море, сынок.
- Где, мама?
Аноним 18/05/16 Срд 14:59:17  746773
>>746762
>Потому что хуита со скобочками это и есть AST. Вот так вот оно выглядит, это ваше AST. Сделаешь AST для программы не на лиспе - будет выглядеть точно так же. А если сделаешь что-то типа DOM, то всё равно не избежишь мыслей о лиспе, потому что твой AST будет превращаться в код на лиспе одним обходом дерева. То есть получится что ты написал транслатор из своего языка в лисп, только по религиозным причинам не дописал один метод на 20 строчек и поэтому лишил своё AST удобного текстового представления. AST без скобочек на получится, потому что, AST это дерево, и его запись должна отражать структуру этого дерева. Лисп гомоиконичен, это значит что структура его кода подобна структуре его AST. А знаешь как выглядит структура AST других языков? Точно так же! Хочешь работать с AST - привыкай к скобочкам.
Аноним 18/05/16 Срд 15:44:25  746828
>>746773
>>746584
Аноним 18/05/16 Срд 15:50:02  746835
>>746828
Ага, эпичный обосрамс, я видел.
Аноним 18/05/16 Срд 16:07:09  746852
>>744159 (OP)
>Почему если я хочу мало-мальски выразительно работать с AST собственной программы, то я обязательно должен подписываться на (ебалу cо (скобками [и больными людьми]))?
Потому что так твой твой код лучше воспринимается как каноничный AST, его воспринимать проще, он более однозначен. С чистым AST работать сложно, потому на место Лиспа пришел Кобол, который ближе к человеческой речи, и который приводится к AST. На первом курсе учат
>- Почему в 2016 году для отладки нет абсолютно ничего лучше брэйкпоинтов и отладочного вывода, а любые инструменты профилирования это обязательно невыносимая ебля?
Ну а как хотелось бы? "По щучьему веленью, по моему хотенью, ошибка в логике - проявись!" А профайлеры работают близко к ОС, это инструменты профессионалов, потому и выглядят так, как будто их писал Столлман в средине девяностых. Удобство работы с профайлерами - не самая главная проблема в профессиональной разработке.
>- Почему в 2016 году мы все еще пишем код приемущественно на функциях, когда можно было бы использовать более интуитивные высокоуровневые примитивы?
Какие такие? Почему функции неинтуитивны?
>- Почему обработка ошибок всегда размещается в основной логике кода, не отделяется от него в отдельный слой, а в лучшем случае нам предлагают либо разворачивать эксепшонами стэк, либо if err != nil а-ля Cи?
Дают маленькому ребенку тетрадку с примерами и говорят: "Решай". Как лучше его контролировать: каждую секунду лезть под руку и спрашивать не накосячил ли он, сравнивать результат после каждой задачи или разрешить звать маму, если что-то не получается или идет не так?
>>err != nil
Это на уровне goto, да, но работает даже на тех платформах, где нету поддержки ООП.
>Почему ни один язык не предлагает версионирование кода из коробки, а вместо этого нам предлагают ебаться с разношерстными пакетными менеджерами или вендорингом?
Это пошло с мира Юникс, где каждая утилита делает по чуть-чуть, но только свое.
Вам запаковать джаву вместе с гитом и обозвать гит Джава Версионинг Фреймворк?
>- Почему ни один язык не позволяет легко писать GUI, а в лучшем случае нам приходится писать JS-подобный QML и связывать его с портянками на С++?
Вот это есть такое, да. Реализация десктопного интерфейса предполагает пердолинга. Qt ещё не так и плох. gtk может быть лучше, но там тоже всё сложно. wxWidgets наел щечки!
>- Почему в 2016 году, на уровне кода, нас еще должно ебать какая "там" база данных, а для коммуникации нам не предложили ничего получше допотопного SQL хипстерского JSON, который не слышал о такой вещи, как integrity; почему я еще делаю миграции вручную?
Есть PDO и ODBC, которые должны быть универсальны, но то, как они реализованы - это другой вопрос.
Аноним 18/05/16 Срд 16:13:02  746861
>>744358
>tfw println не является thread-safe
>tfw операции ввода-вывода запускают отдельный поток, который ну совсем не зависит от того, где операция была заявлена
>tfw операции вывода буферизируются и выдают результат тогда, когда посчитают нужными.
Аноним 18/05/16 Срд 16:38:23  746886
>>745138
Другую хуиту имел в виду, но не могу вспомнить. Там приличный обыкновенный ооп язык, и в этом же синтаксисте (и в этом же рантайме) работа с полноценной СУБД.
Что-то вроде рантайма хранимок но в очеловеченном виде.
Аноним 18/05/16 Срд 16:43:19  746890
>>744343
> Вот ты можешь сейчас взять и безболезненно перевести свое приложение с MySQL на Postgres или с MongoDB на OrientDB, например? Не сможешь.
Такая кретинская постановка вопроса. Ты о реляционных бд вообще представление имеешь? Нет? Совсем никакого? Понятно тогда.
Аноним 18/05/16 Срд 16:44:41  746893
>>746360
> Эмм.. вообще-то могу
Еще один дилетант. Как вы работаете вообще...
Аноним 18/05/16 Срд 16:48:04  746898
>>744463
> Восемь лет делаю веб-сервисы и сетевые приложениях, ни разу не встречал SQL запросы длиной больше 300 символов условно.
Ахахахахахаха вот это пушка
Аноним 18/05/16 Срд 19:46:51  747066
>>746893
> быдло не знает про orm
Аноним 18/05/16 Срд 20:34:28  747108
>>747066
Нет, маня, про orm я более чем прекрасно знаю, и неоднократно в прошлом переносил проекты с orm между разными rdbms. Так быдло - это ты.
Аноним 18/05/16 Срд 20:48:55  747121
>>747066
Кукаретик уровня laba1, претендент на джуниора? И хуле orm?
1) Нативный SQL которого дофига (т.к. на ссаных hql/dql эти запросы не напишешь) придется весь переписывать
2) типы доступных констрейнтов другие, поведение другие, возможности разные
3) типы доступных индексов другие, возможности разные, т.е. может потребоваться схему существенно изменить и попять дохуя переписывать
4) хранимки все переписать, плюс возможности совершенно разные
5) триггеры все переопределить, опять же возможности совершенно разные
6) доступные типы данных другие или аналоги работаю иначе, т.е. переписывать возможно с с существенным изменением схемы
7) механизмы тех же стандартных вещей типа полнотекстового поиска другие, синтакс другой, принципы другие
8) возможности у баз данных совершенно разные - т.е. пол проекта может потребоваться переписать если не больше
9) свои самодельные расширения orm тоже придется переписать (маппинги те же)
10) и еще овердохуя других моментов
И чо бля orm твой?
Проигрываю с вас, такие все выёбистые, а на деле просто болтуны, нули полные.
Аноним 18/05/16 Срд 21:41:58  747174
>>747121
>логика внутри БД
ясно, понятно
Аноним 18/05/16 Срд 21:46:18  747177
>>747121
Абсолютно все твои проблемы высосаны из пальца. + ты юзал хуевую орм + ты зачем-то пишешь sql, когда используешь орм

>>747108
> про orm я более чем прекрасно знаю, и неоднократно в прошлом переносил проекты с orm между разными rdbms
И к чему ты это сказал?
Аноним 18/05/16 Срд 22:08:09  747197
>>746762
https://en.wikipedia.org/wiki/Homoiconicity
на, жри, неуч
Аноним 18/05/16 Срд 22:20:33  747215
>>744159 (OP)
Потому что НИНУЖНО. Было бы нужно, ты бы первый побежал всё это запиливать. Некоторое из того, что ты упомянул, есть, но ты об этом не слышал – настолько оно не нужно.
Аноним 18/05/16 Срд 22:27:59  747223
Более того, был уже такой чел. Говорил, хочу йобу, она всех порвёт. Ему запилили эту йобу. Угадай, что он ответил.
Аноним 18/05/16 Срд 22:59:27  747267
>>747177
>Абсолютно все твои проблемы высосаны из пальца. + ты юзал хуевую орм + ты зачем-то пишешь sql, когда используешь орм
Просто угораю над вами дилетантами.
Аноним 18/05/16 Срд 23:08:10  747278
>>747121
>2016 год
>аутсайдеры неспособные вкурить наконец носкл и не желающие осваивать новое
Аноним 18/05/16 Срд 23:13:23  747283
>>747278
NoSQL исторически появился раньше SQL-а, собственно весь ынтырпрайз до 70-х им в жопу и долбился. Потом британский ученый изобрёл теорию РБД, появление которой привело к немедленному выметанию всего этого ёбаного хаоса с рынка, стандартизации и тотальному овладиванию SQL-а в рекордно короткие сроки. Побочным эффектом стало то, что всякое быдло начало пихать SQL туда, где он не очень-то и нужен, и очень, блядь, страдать, от того, что их гостевухи стали долго загружаться. Потом кто-то сделал фундаментальное открытие - оказывается хранить профили пользователей гостевухи в хешь-таблице в памяти и доставать их оттуда по имени гораздо быстрее, чем реализовывать EAV поверх РБД. После этого переворота в мозгах гостевушников они приняли радостно сверкать новым базвордом по своим блогам и хабро-хабрикам, радуясь, что им в очередной раз удалось повернуть стрелку прогресса вспять и укусить себя за жопу.
Аноним 18/05/16 Срд 23:36:59  747320
>>747121
ОП спросил:
> Почему в 2016 году, на уровне кода, нас еще должно ебать какая "там" база данных
Ну вот потому и должно, что они все разные. Если закладываться на наименьший общий делитель (SELECT huy FROM pizda) тогда с ORM'ами (и разумным количеством тестов) всё прекрасно портируется. А если закладываться на фичи конкретного продукта, то и сиди жри этот продукт тогда.
Аноним 18/05/16 Срд 23:58:55  747338
>>747320
ты ошибаешься.
1) анси недостаточен (я не буду ждать когда - через 20 лет - там появятся нужные типы, деревья и операции над ними, геометрические данные и операции, географические типы и операции и еще много-много-много включая расширения процедурного языка и синтаксические и прочие мелочи коих миллион и без них нельзя)
2) даже то, что стандарт - бывает реализовано по-разному
3) твой ебучий ловест камон деноминатор сильно< чем стандарт. мне оценить трудно, но если учесть, что помимо нормальных бд существуют mysql, sqlite и всякие файрберды, то...
4) сама идея того, что возможность перехода с одной бд на другую обязана быть - ебанашкин бред. код написанный под интерпретатор php не работает на интерпретаторе python и вроде все довольны (можно сделать надъязык и транслировать, такая же глупость как orm будет) схуя, завидев ansi стандарт требуют того же от субд? потому что он есть что ли? ну это глупость.

т.е. и стандарт и даже сабсет столь малы, что для реальных задач недостаточен, но они всё равно больше чем эти ссаные мапперы могут переварить (позволить нормально работать)
Аноним 19/05/16 Чтв 00:28:07  747360
>>747320
В том-то и дело, что в наиболее благоприятном для ORM случае, куда лучше всё что угодно, но не точно не СУБД c SQL: xml/json-файлы, db4o, NoSQL.
Аноним 19/05/16 Чтв 06:07:21  747431
>>746835
Похоже, ты специально путаешь, чтобы вилять проще было. Ок, пойдём с начала и подробно.
>Потому что хуита со скобочками это и есть AST
Вот это конкретное утверждение есть наглый неприкрытый пиздёж лиспосектанта. Это утверждение ложно. Вместо "скобочки - одно из представлений аст", вместо "скобочки - удобное представление аст" (что тоже ложно, но чуть менее бредово, ибо кому-то и правда может быть удобно) ты заявил, что "скобочки = аст". Прежде чем снова вилять, покажи мне хоть одну скобочку в следующем "аст":
"+"
- 1
- "*"
-- 2
-- 3
И, да, пожалуйста не комментируй моё "удобное представление" выдёргивнием слов из контекста, как ты уже сделал вот здесь >>746773. Где на пять "релевантных" слов(осочетаний) только два имеют тот смысл, который ты в них вкладываешь, и одно из этих двух в другом контексте и, опять же, ложно.
Аноним 19/05/16 Чтв 08:11:14  747445
>>747431
>Потому что хуита со скобочками это и есть AST
>Это утверждение ложно.
>Потому что хуита со скобочками это и есть AST. Вот так вот оно выглядит, это ваше AST.
Дальше я пояснил, что имел в виду. И рассмотрел, кстати, случай с
>что-то типа DOM
Так что это ты у нас страдаешь
>выдёргивнием слов из контекста

>Прежде чем снова вилять
>Но вообще AST типизирована, а лиспохуита - нет, это основное отличие.
Ну ты-то у нас не виляешь, ты тупо набрасываешь новый текст, надеясь что твои старые сливы забудут.

>Где на пять "релевантных" слов(осочетаний) только два имеют тот смысл, который ты в них вкладываешь
Конкретизируй предъяву.

>ты заявил, что "скобочки = аст"
Я писал свой ответ в контексте ответа на твой вопрос
>Почему если я хочу мало-мальски выразительно работать с AST собственной программы, то я обязательно должен подписываться на (ебалу cо (скобками [и больными людьми]))?
соответственно я не рассматривал непрактичные формы представления AST, а лишь те, которые удовлетворяют условию "я хочу мало-мальски выразительно работать с AST собственной программы".
Кроме того я предположил что говоря про "(ебалу cо (скобками" ты имел в виду лиспы вообще, а не конкретно те, в которых есть круглые скобки.
Предположил я это потому что думал что ты имеешь хотя бы общее представление о том, о чём говоришь. Похоже ты его не имеешь. Это делает ответ на твой вопрос тривиальным
Q:Почему если я хочу мало-мальски выразительно работать с AST собственной программы, то я обязательно должен подписываться на (ебалу cо (скобками [и больными людьми]))?
A:Возьми лисп с синтаксисом без скобочек, типа http://srfi.schemers.org/srfi-49/srfi-49.html и радуйся жизни.
Аноним 21/05/16 Суб 18:49:53  749547
>>744458
>ORM не должен быть частью языка. ORM не должен быть вообще. Нужно сделать так, чтобы мапить не пришлось. Там нет противоречий никаких, это миф. Так не делают не потому, что это неправильно, а потому, что развивалось всё независимо, и сейчас не хотят вкладываться в создание франкенштейна.
Двачую. Нас спасут объектно ориентированные СУБД.
Аноним 21/05/16 Суб 19:58:43  749651
>>745691
>>745691
http://www.vpri.org/html/writings.php
Ищи тут
Аноним 22/05/16 Вск 00:02:19  749913
>>749547
есть примеры таких систем юзабельных?
Аноним 24/05/16 Втр 10:11:53  752465
>>749547
Хуйню сказал. Очень маленький процент данных имеют объектную природу. Обычно это реляционная параша или графы.

>>749913
Нет, потому что это глупость. inb4: графовые бд
Аноним 24/05/16 Втр 10:22:19  752471
>>752465
Объекты это частный случай графов.
Аноним 24/05/16 Втр 10:27:16  752477
>>752471
Ничего подобного. Граф — это структура данных, а объект — способ организации данных.
Аноним 24/05/16 Втр 10:42:09  752487
>>749547
Объекты - хуйня из под коня, ебучее шаманство с is vs has, SOLID и прочим обливанием мочой и заряжанием баночек, вместо обоснованной и формализованной реляционной БД с нормализацией.
Аноним 29/05/16 Вск 00:31:03  756506
>>744159 (OP)
> Почему в 2016 году мы все еще пишем код приемущественно на функциях, когда можно было бы использовать более интуитивные высокоуровневые примитивы?
Это например? Чем тебе методы объектов с нормальными названиями не угодили?

> Почему в 2016 году, на уровне кода, нас еще должно ебать какая "там" база данных, а для коммуникации нам не предложили ничего получше допотопного SQL хипстерского JSON, который не слышал о такой вещи, как integrity;

Предложили - ORM.

> почему я еще делаю миграции вручную?
Ну EF шарповский, например, вполне себе умеет автоматом генерить код для миграций. Получается, в основном, достаточно хорошо.

> Почему ни один язык не позволяет легко писать GUI

Пока не могу придумать вариантов описания UI в каком-то *ML, + wysiwyg редактора формачек к нему.

> Почему обработка ошибок всегда размещается в основной логике кода, не отделяется от него в отдельный слой, а в лучшем случае нам предлагают либо разворачивать эксепшонами стэк, либо if err != nil а-ля Cи?

Этот слой ты, вообще говоря, можешь сделать сам.

> Почему ни один язык не предлагает версионирование кода из коробки, а вместо этого нам предлагают ебаться с разношерстными пакетными менеджерами или вендорингом?

Потому что это входит в функциональность системы контроля версий, а не языка.
Аноним 29/05/16 Вск 02:15:19  756536
>>744159 (OP)
> - Почему CRUD обязывает меня писать либо лапшу, либо замысловатые муторные обертки, а ничего лучше protobuf кодогенераторов не придумали?
> - Почему в 2016 году, на уровне кода, нас еще должно ебать какая "там" база данных, а для коммуникации нам не предложили ничего получше допотопного SQL хипстерского JSON, который не слышал о такой вещи, как integrity; почему я еще делаю миграции вручную?

Spring Data с высоты абстракции ссыт тебе в лицо мочой прозрения.
Аноним 29/05/16 Вск 05:42:39  756566
Король веб-девелопмента в треде. Задавайте свои вопросы.
Аноним 29/05/16 Вск 06:06:11  756568
>>756566
Какие самые типовые проекты у тебя лично? Что самое рутинное, а что самое интересное в процессе разработки?
Аноним 29/05/16 Вск 06:09:30  756569
> Пока не могу придумать вариантов описания UI в каком-то *ML, + wysiwyg редактора формачек к нему.
Xaml + студийный дизайнер к нему. Как язык разметки - топ.
Аноним 29/05/16 Вск 09:59:21  756605
>>744159 (OP)
Почему ты еще не осилил Haskell?
Аноним 29/05/16 Вск 10:36:03  756616
14645073634580.jpg (177Кб, 704x1024)
Боль С-байтоёба
1. Почему хуй заставишь функцию быть инлайновой за пределами модуля. Компилятору впадлу ребилдить пару зависимых модулей? Нет блять, ебись с макросами!
2. Почему в С нет ебаных ассоциативных массивов из коробки?
3. Почему каждый комиплятор реализует инлайн ассемблер через жопень? Где стандартный крассивый, с подсветкой синтаксиса и полныйконтрль регистр<->переменная?
4. Почему бы и не добавить перегрузку функций как в крестах?
5. Где сука, богатый функционал стандартной библиотеки? Надо что то быстро захуячить, похуй на эффективность? - На тебе безопасные функции для работы со строками и памятью, с проверкой границ и переполнения! Нужен эффективный быстрый код? -Вот тебе небезопасные функции. Где приятный лаконичный синтаксис?
6. Где УДОБНЫЙ механизм обработки ошибок без if(err) return; или if(err) goto ERR???
Аноним 29/05/16 Вск 10:42:51  756617
>>756616
Ты какой-то дебил. Половина требований к переносимому ассемблеру как к вычокоуровенному языку, ахуеть теперь.
Аноним 29/05/16 Вск 10:56:00  756624
>>756616
UPD
7. Нельзя определить тип перечислений.(ахтунг)
8. Регулярочки из коробки.
9. Вернуть через стек боллее одной переменной.сомнительно, но дайте мне это сделать!
Аноним 29/05/16 Вск 11:03:35  756626
>>756617
Обоснуй по пунктам, где проблема?
Это инструмент и он должен быть удобным.
Если бы хипстеры меньше задрачивали новомодные высокоуровневые элитарные новомодные парадигмы а просто писали стандартную либу - мир был бы лучше.
Аноним 29/05/16 Вск 11:53:36  756656
>>756616
Объектно-ориентированный Си дальше по коридору.
Аноним 29/05/16 Вск 11:53:56  756657
>>756626
Возьми и сам напиши епта.
Аноним 29/05/16 Вск 11:59:47  756661
>>756656
Где там хоть намек на ООП?
Аноним 29/05/16 Вск 12:05:08  756663
>>756626
>Обоснуй по пунктам, где проблема?
Давай, обосновываю:
когда C создавался, требования были другие, и всё.
>Это инструмент и он должен быть удобным.
Он и без того самый удобный инструмент для написания низкоуровенного кода.
>мир был бы лучше
Мир лучше именно от того что они создают новое - нахуя копаться в старом дерьме?

Посмотри что происходит в мире стандартизации C++. Там даже модули уже несколько лет не могут принять, и судя по всему ближайшие 5 лет не примут - не могут развернуться в куче своего же легасиговна.
Аноним 29/05/16 Вск 12:11:40  756668
>>756624
>7. Нельзя определить тип перечислений.(ахтунг)
С++, Rust.
>8. Регулярочки из коробки.
С++, Rust.
>9. Вернуть через стек боллее одной переменной.
Rust, С++ с помощью STL.
>>756616
>за пределами модуля
Вот тут кек, но всё же Rust.
>2. Почему в С нет ебаных ассоциативных массивов из коробки?
Потому что это переносимый между компиляторами и платформами, сука, ассемблер. Только в стандартных библиотеках плюсов с растом, из коробки только в более высокоуровенном говне вроде свифта о да, 12 часов компиляции.
>3. Почему каждый комиплятор реализует инлайн ассемблер через жопень?
Чому это кто-то должен стандартизовать? Под каждую платформу каждый реализует кто как видит.
>с подсветкой синтаксиса
В нормальном текстовом редакторе. Хотя это говно уровня пхп+хтмл, ну лан.
>полныйконтрль регистр<->переменная
Он и без того есть (асм и __асм в студии к примеру).
>Где УДОБНЫЙ механизм обработки ошибок
С++, Rust.
>Где сука, богатый функционал стандартной библиотеки?
В яве.
Аноним 29/05/16 Вск 12:45:15  756686
>>756569
>>756506
> Пока не могу придумать лучше вариантов
Я там слово потерял, и не знаметил. А так да, вот например wpf
Аноним 30/05/16 Пнд 06:10:50  757312
>>756663
>когда C создавался, требования были другие
Когда лисп создавался, требования были другими. И ему не помешало, почему-то.
>Он и без того самый удобный инструмент для написания низкоуровенного кода
Сказал человек, ассемблера не видавший.
Аноним 30/05/16 Пнд 07:19:25  757318
>>757312
>И ему не помешало, почему-то.
Так он и поныне самый убогий из фп языков. Хотя, если пораскинуть мозгами – лисп времён си уже давно умер, все современные форки младше даже плюсов.
>Сказал человек, ассемблера не видавший.
Ассемблер-то видал, задач где удобнее написать на нём чем на си – нет. Разве что всякие переключения контекста и SIMD хуита, где без него никак.
Аноним 30/05/16 Пнд 09:00:18  757342
>>756616
> 2. Почему в С нет ебаных ассоциативных массивов из коробки?
Вот здесь двачую, за полвека почти байтоебы так и не написали ничего подобного крестовой STL.
Аноним 30/05/16 Пнд 09:54:12  757364
>>757318
>задач где удобнее написать на нём чем на си – нет
Абсолютно любая низкоуровневая задача. Хотя бы потому, что ты всегда знаешь, сколько байт у тебя инт, какое где выравнивание, и нигде не проебёшься с sizeof.
Возможно, ты имел в виду кроссплатформенный низкоуровневый код, тогда да - там только сишка. Но это как с пустыней - ты будешь пить мочу не потому, что она охуенна, полезна и вкусна, а просто другой воды нет.
Аноним 30/05/16 Пнд 17:21:15  757645
>>757364
>Хотя бы потому, что ты всегда знаешь, сколько байт у тебя инт, какое где выравнивание, и нигде не проебёшься с sizeof.
Если ты пишешь кроссплатформенный код на си, то ассемблеру засчитывается техническое поражение за неявку на поединок.
Если ты пишешь код на си под конкретную архитектуру, то ты должен знать её специфику.
В пределах одной архитектуры сишный код намного проще чем ассемблерный портируется с одной ОС на другую. Чем не удобство?

Аноним 31/05/16 Втр 12:10:10  758276
>>744159 (OP)
>работать с AST собственной программы
Scala же
Аноним 02/06/16 Чтв 14:36:12  760025
>>744369
Ты имеешь в виду денотационную семантику SQL? SQL-ный синтаксис - это параша параш, я любой проект, который связан с РСУБД, начинаю с написания генератора запросов SQL.
Аноним 02/06/16 Чтв 16:35:07  760121
>>758276
У вас хэловорлд компилируется пол часа, господин.
Аноним 02/06/16 Чтв 16:36:09  760123
>>760121
Как что-то плохое.
Запустил компиляцию, и пошел на перекур. Лампота.
Аноним 02/06/16 Чтв 16:40:35  760129
>>760123
Ходить на перекур во время каждой перекомпиляции из-за пропущенной скобочки/пропущенного символа в шестизначном операторе из скалыз/шапелеса/др. хуитка – от рака лёгких сдохнешь через недельку.
Аноним 02/06/16 Чтв 17:02:29  760148
>>760129
IDE должна подчеркнуть их красным ещё до компиляции.
Аноним 02/06/16 Чтв 17:44:43  760178
>>760148
1) IDE – не манна небесная, подчеркнёт только конкретно грубые синтаксические ошибки. А от самых "тонких" тут легендарный пример со складыванием листов тебя не спасёт даже компилятор.
2) На больших проектах анализ кода приходится банально отключать – или нужен сервер чтобы их редактировать.
Аноним 02/06/16 Чтв 20:06:57  760256
>>760129
>>760178
Скорость компиляции конечно не самая сильная сторона скалы хотя есть проблемы и посерьёзнее, но вы, дебики, вообще не представляете о чем говорите.
Аноним 02/06/16 Чтв 20:54:13  760288
>>760025
Вот да. Почему почему все NoSql пытаются избавиться от реляционной модели, а не от sql?
Аноним 02/06/16 Чтв 21:07:42  760293
>>760288
>>747283
Аноним 02/06/16 Чтв 21:24:51  760300
>>760256
Мне кажется, это твоя мамаша не представляла что делает.
Аноним 17/06/16 Птн 17:38:48  772176
бамп

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 154 | 7 | 60
Назад Вверх Каталог Обновить

Топ тредов