LINUX.ORG.RU

Его крокейшество о вредности СУБД, если архитектурно она для программ, а не живого человека

 ,


0

4

Давно уже что-то про Столярова Croco ничего не было =) А тут он повод недавно дал, расписав почему считает недопустимым использовать СУБД в архитектуре при проектировании софта. То есть, если для каких-то программ нужно хранение данных, его надо индивидуально под программу делать, а не подключать базы данных.

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

http://www.stolyarov.info/guestbook#cmt97

==============

Я придерживаюсь принципа несколько более узкого: недопустимо создание, распространение и использовние программ, для работы которых требуется СУБД.

Причины можно назвать, например, такие:

  1. СУБД — это лишняя внешняя зависимость, при том что вообще любые внешние зависимости суть хамство в отношении пользователей и мейнтейнеров;
  2. СУБД требует трудозатрат на установку, настройку и дальнейшее администрирование;
  3. СУБД способна упасть (и да, падает намного чаще, чем, скажем, тот же апач — вообще пока мои сайты жили на «традиционной» CMSке, именно СУБД была причиной всех случаев downtime моих сайтов, за исключением одного, когда на сервере физически осыпался жёсткий диск);
  4. СУБД требует от пользователя постоянно обновлять навыки, которые, возможно, больше ни для чего не нужны;
  5. СУБД хранит информацию пользователя в неочевидном для него виде; этим грешат не только СУБД, конечно, но СУБД мало того что хранят всё в бинарных файлах, которые без самой СУБД даже думать нечего разобрать, они ещё и вводят дополнительный слой хаотизации в виде схемы БД, провоцируя разработчиков софта на внедрение «решений», единственное «описание» которых остаётся в голове у автора;
  6. СУБД требует изрядных вычислительных мощностей и крадёт (а вовсе не повышает, как почему-то многие уверены) производительность.

Я, заметим, не рискну утверждать, что СУБД как сущность вообще никогда не может ни для чего применяться. Тут вопрос в том, кто на ком стоял: если главной целью является база данных как таковая, то есть вот имеется какой-то значительный объём разнородной, но при этом взаимосвязанной информации и стоит задача обеспечить его хранение и в нём поиск, причём никто заранее не знает, какие именно задачи будут решаться на этом массиве информации, какие именно поисковые запросы будут делаться и вот это вот всё, то да, СУБД вполне может оказаться адекватным решением, и даже для работы с ней могут создаваться вспомогательные программки. Это, конечно, не оправдывает существования языка SQL, который в любых его проявлениях представляет собой надругательство над здравым смыслом, но в целом СУБД как вид софта существовать, наверное, всё-таки может — но лишь в случаях, когда либо вообще нет никаких программ кроме неё самой, либо программы делаются для неё, а не она сама поддерживается для работы какой-то программы.

Всё это можно выразить и короче: СУБД, по-видимому, вполне имеет право на существование в ситуации, когда основным способом работы с ней будет непосредственное вбивание запросов на её языке запросов живым человеком. То есть когда именно вот это — основное, а всё остальное вспомогательное. В подавляющем большинстве случаев мы видим прямо противоположное: с СУБД как-то там общается некая программа (намного реже — больше одной программы, и это уже пограничный случай), а живой человек делает запросы либо только в рамках обслуживания всей системы, либо вообще никогда.

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

★★★★★
Ответ на: комментарий от Zhbert

Все там нормально. Есть, например, библиотека onion - очень годная.

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

// Эдди

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от Iron_Bug

Ага. Но не всегда чистится, если нет всяких гитов. Помню, видел код морды для циклотрона, где две трети исходников на делфи были закомменатированы как «устаревшие», но не удалены.

Zhbert ★★★★★
()
Ответ на: комментарий от anonymous

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

Я тебя за это уважаю прям. Сильно.

З.Ы. Раз уж ты постоянно на ЛОРе присутствуешь как дух анонимуса, может, все-таки вернёшься нормально? :)

Zhbert ★★★★★
()
Ответ на: комментарий от anonymous
Ответ на: комментарий от Iron_Bug

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

s-warus ★★★★
()
Ответ на: комментарий от Zhbert

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

Iron_Bug ★★★★★
()
Ответ на: комментарий от eao197

суть в том: форк или порождение новой нити или передача сигнала уже существующей нити или процесса обходится дороже чем генерация и выдача результата.

Результат если твоя прога заранее сгенерит все ответы и остаётся только отдать заготовленое, то однопоточный дурацкий сервер с 512мб памяти с целеронД справляется с нагрузкуой которая ложит на лопатки сотовую связь в местячковом городе Москва в 2006году.

Но такой фокус возможен, только в таком редком, я бы сказал исключительном случае.

s-warus ★★★★
()
Ответ на: комментарий от s-warus

Страх сложностей главный враг человека

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

впрочем, сейчас люди какие-то совсем несамостоятельные. они не пытаются ничего читать и исследовать сами. они лезут в интернеты и делают бездумный копипаст, или, ещё хуже, делегируют свои и без того скромные интеллектуальные потуги какой-нибудь «гопоте». это уже что-то совсем отличное от обучения и получения опыта.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 2)
Ответ на: комментарий от Iron_Bug

я в основном видела очень адекватных профессоров

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

Героя, увы, отчислили, но у шизички мозги на место всё-таки встали - в будущем она пользовалась только карандашом.

PS: История не обо мне :)

liksys ★★★★
()
Последнее исправление: liksys (всего исправлений: 1)
Ответ на: комментарий от DarkAmateur

А вот интересно, SQLite, который идёт вместе с программой, это «лишняя зависимость», с «трудозатратами на установку, настройку и дальнейшее администрирование»?

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

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от liksys

У нас такая была. Помню, нарисуешь этот долбаный чертеж вручную, а она ручкой начирикает. На возмущённое «КАКОГО ЧЛЕНА МАТЬ ТВОЮ?» говорила, что «надо уже на копудахтере чертить, а не вручную».

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

в Универе, конечно, никакого черчения не было. но в школе меня учительница по черчению доставала: я опять вижу, что ты рисуешь от руки, а не по линейке! я говорю: а вы проверьте по линейке! она: но я же ВИДЕЛА, что ты рисовала это от руки.

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

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

а почему ваши стопицот потоков «ломятся в одну дверь»?

Вы же сами захотели blocking IO. Что мгновенно приводит к потоку на активную операцию. А как только вы начинаете мультиплексировать «ручками» вы всё равно приходите к концепциям async-IO, только наверняка сделаете это хуже чем уже сделали за вас в ядре.

во-первых, надо продумывать архитектуру софта, чтобы такого не было

Как именно? И чем это будет отличаться от non-blocking IO?

bugfixer ★★★★★
()
Ответ на: комментарий от Iron_Bug

я не хотела

Да ладно! Цитирую:

там, где есть ввод и вывод на медленные устройства или устройства с ограниченным буфером, всегда нужны отдельные потоки на выгребание/отправку данных.

Внимание, вопрос: как ещё уважаемая публика должна была это интерпретировать?

Но вы лучше расскажите что вы можете предложить лучше чем non-blocking IO?

bugfixer ★★★★★
()
Последнее исправление: bugfixer (всего исправлений: 1)
Ответ на: комментарий от bugfixer

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

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

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 2)
Ответ на: комментарий от Iron_Bug

нормально, а не в вашем «параноид стайл».

Не хочу обижать, но это называется «проекция».

основную массу работы выполняют воркеры

Так так. И сколько их? И на чём они спят? И зачем они вообще нужны если у меня все ядра нагружены и так, только не тредами в одном процессе, а N одно-двух потоковых процессов? Что это вам даст? Значёк «у нас всё модно-молодёжно, на пуле воркеров»? Что?

когда все одновременно кучей куда-то ломятся - это вы придумали, а не я.

Это реальность.

и это от непонимания того, как устроена синхронизация.

Мило.

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

Твою ж ты мать. Уверен что рядом с high-load вас и близко не было, и более того - если чего и писали, то сами за деплоймент и то как оно себя ведёт в проде головой не отвечали. Зато ярлыки клеить горазды.

bugfixer ★★★★★
()
Ответ на: комментарий от bugfixer

Не хочу обижать, но это называется «проекция».

ну да, вы на меня зачем-то проецируете своё непонимание синхронизации и какие-то вымышленные проблемы. а я вот работаю много лет с софтом и проблем как-то не заметно.

не надо приписывать мне свои высказывания. оставайтесь в вашей пещере. мне пофиг.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

запросто. пишу многопоточные приложения уже лет 20, никаких проблем с ними никогда не было. это всё страшилки для дураков.

Так твоего кода никто не видел, что ты нам сказки-то рассказываешь.

anonymous
()
Ответ на: комментарий от anonymous

ты рожей не вышел мой код смотреть :) до NDA и всяких закрытых сорцов онанимусов не допускают. ты даже здесь залогиниться не можешь, только подсираешь исподтишка.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

ты рожей не вышел мой код смотреть :) до NDA и всяких закрытых сорцов онанимусов не допускают. ты даже здесь залогиниться не можешь, только подсираешь исподтишка.

Нету ручек — нет конфетки. Апелляция к собственному опыту работает только если код показать можешь. А ты не можешь.

anonymous
()
Ответ на: комментарий от Iron_Bug

проецируете своё непонимание синхронизации и какие-то вымышленные проблемы

Пожалуйста, перестаньте. Вы этим только втаптываете в грязь весомость своего мнения.

а я вот работаю много лет с софтом и проблем как-то не заметно.

И это не плюс. Необучаемостью и проф-непригодностью попахивает.

bugfixer ★★★★★
()
Ответ на: комментарий от Iron_Bug

эээ.. а как оптимизация противоречит написанию нормального кода? понятно, что для начала не нужно писать говнокод. а оптимизация - это уже потом.

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

10 раз может и не хватить. А время есть далеко не всегда. И не только над алгоритмами, но и над структурами данных, что нередко важнее.

Пример, с которым я много лет сталкивался: программа – лидер в своей отрасли, но один из ключевых форматов данных был создан впопыхах в середине 1990-х, когда рынок срочно требовал хоть какую-то программу для их обработки. К 2010-ым годам необходимость его замены давно назрела. Но всё не могли решить, как и на что. Договорились с кучей фирм (клиентов и конкурентов) развивать новый формат на базе высокопроизводительной свободной библиотеки, но не могли определиться с представлением метаданных, поэтому продолжали пользоваться старым форматом, который не устраивал всех. В ~2017 одному программисту это надоело, он вставил новый формат в старый контейнер. Работает неидеально, в API несколько частично дублирующихся классов (функциональность методов совпадает процентов на 50-80, ни один класс не покрывает все потребности типичного рабочего процесса), при открытии в сторонних программах метаданные могут теряться, но зато стало быстро. А международный стандарт и эталонная реализация последние лет 5 в статусе «готовы на 90%».

Примерно то же было с переходом на Юникод и на 64 бита, но намного быстрее. Заседали, обсуждали, ничего не решали, потом терзаемый клиентами разработчик в своей зоне ответственности делал криво, но работоспособно, год-два допиливали, и все на это переходили.

olegd ★★★
()
Ответ на: комментарий от anonymous

Эдди

А кстати. Давно хотел спросить. Насколько я знаю, всякие NetCFD, HDF, HDF5 изначально создавались для астрономических данных. Насколько часто ими пользуются астрономы?

olegd ★★★
()
Ответ на: комментарий от olegd

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

с 64 битами всё как-то само собой случилось: оси перешли и все перешли. я только переписывала драйверы под 64 бита. с юникодом тоже не помню особых проблем, но я не занималась юзерскими интерфейсами. а вот с ipv6 была долгая история. как-то он вообще застрял и ни туда, ни сюда. до сих пор практически никто его не предлагает и не поддерживает нормально. в стандартах он есть давно, но в реализациях как-то очень выборочно.

Iron_Bug ★★★★★
()
Ответ на: комментарий от anonymous

какие люди! аналогично: стараюсь использовать Си, где можно. большинство софта на моей машине написано на нём и я сама на нём пишу практически всё. благо, опыта хватает. иногда и вместо скриптов проще на Си написать.

«ты, если что, заходи!» (С), а то тут мало адептов сишечки.

Iron_Bug ★★★★★
()
Ответ на: комментарий от anonymous

очень серьезном бизнесе

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


И, да, что за гуманитарные аргументы?

Чем технически та же Java лучше, чем, например, Scala (да любой другой язык, с GC, но не императивный)? Спрашиваю именно про язык как таковой, а то снова начнется мантра про «на ней пишут миллионы и язык Х создали корпорации, а они не могут ошибаться!».

anonymous
()
Ответ на: комментарий от Iron_Bug

но в школе меня учительница по черчению доставала: я опять вижу, что ты рисуешь от руки, а не по линейке! я говорю: а вы проверьте по линейке! она: но я же ВИДЕЛА, что ты рисовала это от руки.

Ностальжи

В пятом классе у меня были проблемы с математикой, не умел решать задачи.
Как-то мама (Царствие Ей Небесного) часа два со мной сидела и плакала и вдруг - РЕШИЛ ЗАДАЧУ!
После этого у меня появился интерес к математике и физике.
В восьмом классе дифы решал, труды Эйлера по интегральному исчислению читал и понимал, …
В школе учительница по математике ставила мне за контрольные тройки, за плохой почерк, а основном за то, что писал шариковой ручкой (в те года положено было писать лишь чернильной).
В шахматный кружок отдали и стал кандидатом в мастера.
Всё это к сожалению развило во мне БОЛЬШУЩЕЕ тщеславие.
Долго оно меня терзало.

Скажу вам «по секрету» - лавное в каком духовном состоянии находится человек, а всё остальное пятистепенно.

anonymous
()
Ответ на: комментарий от olegd

И не только над алгоритмами, но и над структурами данных, что нередко важнее.

Безусловно.
Вот ныне наконец то решил вопрос - «Как без сериализации можно передать данные структуры любой сложности в run-time, которая может содержать адресные поля, списки, деревья, …».
Самое главное здесь в том, что такого рода данные можно сохранять в метафайлах и работать с ними.

Мелочь?
Да как сказать …

Мне так это позволило много упростить загрузку/выгрузку данных и метаданных в память/файлы в run-time.

Ведь «Где просто, там ангелов со ста. Где мудрено, там ни одного».

Этот пост был о структурах и алгоритмах.

Ныне в какой-то мере решены линковки и динамической загрузки кода в run-time, а не менее важно решение вопросов работа с динамическими данными в run-time.

Ведь многие алгоритмы с использованием динамических объектов много проще разрабатываются.
Эти вопросы весьма интересны и в книгах об этом ничего нет.
То что есть это скорее азы и «намёк».

Безусловно с всякими proto buffer не собираюсь «воевать», «мир спасать», стать богатым …
Разработка не для этого ведётся.
Не скажу для чего, но вовсе не из-за некоего тайного тщеславия.
Просто Господь Заповедал другим помогать и любить.
Во мне пока конечно этого нет, но исполнение Заповедей Господа для меня много важнее всего остального.

Что скажу о себе?

Если честно говоря, то чувствую и знаю, что «раб никудышний».
Эх, …

Пошучу

С бубном плясать и петь «не моё» ОДНОЗНАЧНО.

Ныне (как говорил в предыдущих постах) шаман на шамане и шаманом погоняет.
У каждого какая-то своя мораль, … своя «микро вселенная».

Это духовные вопросы и они не познаются чтением книг, «надуванием щёк», властью, деньгами, …
Духовность даруется людям Богом туне и за частую люди об этом не ведают.
Да это и к ЛУЧШЕМУ!

Что скажу о мире?

Такое впечатление, что в дурдомах охрана плохая и пациенты разбегаются из них.
Как-то так …

anonymous
()
Ответ на: комментарий от bugfixer

Необучаемостью и проф-непригодностью попахивает.

Когда Iron_Bug включает этот свой режим непробиваемой самоуверенности мне вспоминается вопрос, заданный ей когда-то на этом форуме. И это тот же самый человек, который, емнип, в своем резюме заявлял про знание C++ «в совершенстве».

Так что, боюсь, столь высокая самооценка у Iron_Bug проистекает из-за обыкновенной человеческой глупости, а не от огромного багажа достижений за спиной.

eao197 ★★★★★
()
Ответ на: комментарий от Iron_Bug

поэтому я тут стараюсь развеивать наиболее типичные и странные фобии касательно управления памятью или потоками. чтобы не создавались неоправданные страхи.

Мне кажется, что здесь уместна такая аналогия:

Можно научиться ходить по канату. Нужно только не боятся и тренироваться. Много тренироваться.

В итоге можно достичь мастерства в этом деле и ходить по канату без страховки хоть под куполом цирка, хоть между небоскребами.

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


Думается, что люди, которые в своей жизни наелись багов в многопоточности, вам именно на это и намекают: даже если вы собаку в этой области съели все равно многопоточность – это сложно и без багов не обходится.

Поэтому-то и слова «там все тривиально» всерьез не могут восприниматься.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Думается, что люди, которые в своей жизни наелись багов в многопоточности, вам именно на это и намекают: даже если вы собаку в этой области съели все равно многопоточность – это сложно и без багов не обходится.

Да, это не простой вопрос.
Пожалуй пока он в полной мере не решён.
Если бы он был решён, то многие программисты не говорили о том, что этот вопрос прост.

Весьма достойна задача!

anonymous
()
Ответ на: комментарий от anonymous

Вот ныне наконец то решил вопрос - «Как без сериализации можно передать данные структуры любой сложности в run-time, которая может содержать адресные поля, списки, деревья, …».

Для big data ещё не решил этот вопрос.
В пределах 4GB однако должно работать.
Конечно не всё здесь сделано, ещё много API нужно будет разработать для работы с динамическими объектами.
И конечно не утверждаю, что то что сделано «панацея».
Главное что работа ведётся, да и результат есть.
Но вовсе не «панацея».

В чём профит от этой задачи.
Довольно тривиальный - можно будет эффективно работать с динамическими объектами.

Мир алгоритмов весьма велик и задач в нём ВАЛОМ!

anonymous
()
Ответ на: комментарий от anonymous

Да, это не простой вопрос.

Если рассуждать о многопоточности, то проблему можно разделить на несколько слоев (или уровней, не знаю как лучше сформулировать).

  1. У нас есть возможность использовать готовые высокоуровневые модели. Например, мы можем решить свою задачу посредством модели акторов. Или посредством CSP-шных каналов. Или посредством task-ов. Или посредством OpenMP. В этом случае, как правило, можно взять готовые инструменты и, следуя рекомендациям лучших собаководов, можно вообще не столкнуться с ужасами многопоточности.

  2. Мы не можем решить свою задачу посредством высокоуровневых инструментов. ХЗ почему, может подходящих инструментов нет. Но нам достаточно примитивов уровня mutex, condition_variable и semaphore. Здесь уже начинаются приключения, т.к. основная сложность не в понимании принципов работы этих самых mutex/condvar/semaphore, а в их расстановке по коду с учетом самых разнообразных ситуаций и зависимостей между тредами и данными. И вот здесь уже становится трудно т.к. люди не очень хороши в моделировании в своем мозгу реально параллельных потоков событий.

  3. Нас не удовлетворяют по тем или иным критериям используемые на предыдущем уровне mutex/condvar/semaphore. И мы вынуждены опускаться до атомиков и барьеров. Тут, как по мне, вообще жесть начинается, т.к. мало того, что наши мозги плохо справляются с параллельными потоками событий, так еще и сами механизмы (типа atomic-ов) совсем не просты.

Отсюда и вполне понятные рекомендации:

  • не используйте многопоточность вообще. И это очень и очень правильная рекомендация, двумя руками за;
  • если таки нужно, то сперва попробуйте обойтись готовыми высокоуровневыми инструментами, благо их немало уже накопилось.

Ну а если этого все-таки не хватает, то добро пожаловать в ад ;)

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Если рассуждать о многопоточности, то проблему можно разделить на несколько слоев (или уровней, не знаю как лучше сформулировать).

В форуме много талантливых программистов.
Жаль что многие из них лишь ждут халявы …

anonymous
()
Ответ на: комментарий от eao197

Не понял при чем здесь халява и кто и зачем ее ждет.

При том, что задачу обеспечения многопоточности нужно решать.
Впрочем в какой мере она решена мне не известно.
«За двумя зайцами бегать, ни одного не в поймать!».

anonymous
()
Ответ на: комментарий от anonymous

При том, что задачу обеспечения многопоточности нужно решать.

Я не знаю про «задачу обеспечения многопоточности». Да и звучит это как «окончательное решение еврейского вопроса», типа раз и навсегда.

Есть прикладные задачи, в которых возникают вопросы вида:

  • можно ли упростить решение за счет применения многопоточности?
  • можно ли увеличить производительность за счет применения многопоточности?
  • можно ли увеличить отзывчивость за счет применения многопоточности?

И если на такие вопросы следует ответ «да», то тогда возникает необходимость решить конкретную прикладную задачу с использованием многопоточности.

Причем в области параллельных вычислений решения будут принципиально отличаться от решений в области обслуживания большого количества параллельных сетевых соединений.

eao197 ★★★★★
()
Последнее исправление: eao197 (всего исправлений: 1)
Ответ на: комментарий от anonymous

«За двумя зайцами бегать, ни одного не в поймать!».

Через какое-то время пожалуй протестирую API core путём создания хранилища данных для offline помещения данных в него из ресурсов internet.

Конечно знаю о том что имеются такого рода уже решения и место где лежат данные для создания такого рода хранилища.
Профит будет от дополнительного тестирования API core и скорее всего улучшения API и архитектуры хранения данных.

Это упростит создание всякого рода медийных и иного рода публикаций.

anonymous
()
Ответ на: комментарий от eao197

Поэтому-то и слова «там все тривиально» всерьез не могут восприниматься.

На самом деле у меня нет повода думать что у госпожи сколь серьёзный опыт в принципе имеется. Ничего «mission-critical» так точно (*). Та лёгкость с которой она ресурсами разбрасывается… И от прямых неудобных вопросов всегда уходит, включая «дурочку» и «что вы ко мне пристаёте со всякой хнёй которую сами же нафантазировали». А неоднократные пассажи про «непонимание синхронизации»: я даже не уверен что под этим имеется в виду - в какой асм это разворачиваете, чего стОит в тактах в congested и non-congested случаях, что-то ещё… Я забил. Пусть продолжает витать в облаках и мнить себя мега-звездой программирования.

(*) её неоднократно (не я) просили код показать, ответ всегда один - «недостойны сей чести, в лес». Мне, на самом деле, её код абсолютно неинтересен. Я бы хотел услышать что-то в духе «результатами моего труда вы пользуетесь каждый раз (условно) заглядывая в холодильник «Ока», или покупая билеты на самолёты Аэрофлота», пусть конкретные продукты назовёт. А то такое ощущение что дальше хелло-вордов дело-то и не заходило.

bugfixer ★★★★★
()
Последнее исправление: bugfixer (всего исправлений: 1)
Ответ на: комментарий от eao197

ты чего? счетаешь: что от много поточности компы взрываются? дома компютера нет, или мейнфрейм обязательно нужон? идиот: чтобы скорость света померять нужна микроволновка с шоколадкой, а не сразу коллайдер размером со страну, я сд болвенку туда запихал, нужные квадратики получил померял посчитал

s-warus ★★★★
()
Последнее исправление: s-warus (всего исправлений: 1)
Ответ на: комментарий от bugfixer

ответ всегда один - «недостойны сей чести, в лес».

Скорее всего такие ответы тем, кто ей хамит.
Что до публикаций исходного кода, то вполне допускаю, что она не имеет право его публиковать.
Впрочем как на самом деле мне не ведомо, но специалист она хороший.

anonymous
()
Ответ на: комментарий от anonymous

но специалист она хороший.

Хотелось бы увидеть хоть сколь-нибудь достоверное тому подтверждение. А пока были лишь голословные утверждения. Да и та скорость и тот объём с которыми мадам коменты строчит заставляют задуматься о её занятости и востребованности.

bugfixer ★★★★★
()
Ответ на: комментарий от bugfixer

Да и та скорость и тот объём с которыми мадам коменты строчит заставляют задуматься о её занятости и востребованности.

Одиночество …

Пошучу

«Вот и нету вожаков»

anonymous
()
Ответ на: комментарий от bugfixer

И от прямых неудобных вопросов всегда уходит, включая «дурочку» и «что вы ко мне пристаёте со всякой хнёй которую сами же нафантазировали».

Это да, с конкретикой проблемы.

её неоднократно (не я) просили код показать, ответ всегда один - «недостойны сей чести, в лес»

На самом деле есть огромное количество хороших специалистов, у которых нет ни строчки в OpenSource, как и собственных пет-проектов для души. Таким реально показать нечего, т.к. не будешь же куски закрытого кода выкладывать.

Только вот я пока еще не видел ни одного хорошего специалиста, который был бы настолько самоуверен в собственной квалификации.

Я бы хотел услышать что-то в духе «результатами моего труда вы пользуетесь каждый раз (условно) заглядывая в холодильник «Ока», или покупая билеты на самолёты Аэрофлота», пусть конкретные продукты назовёт.

Это тоже так себе показатель. Чем круче проект, тем меньше там вклад одного человека.

В общем, я давно уже вывел для слов Iron_Bug коэффициент доверия и не принимаю ее утверждения слишком уж всерьез. Но вот перлы «тут все тривиально» доставляют даже не смотря на это.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Это тоже так себе показатель.

Даже сам факт участия в подобных продуктах позволяет предположить что есть хоть какое-то понимание ответственности за то как они работают, а не вот это вот всё…

bugfixer ★★★★★
()