Программирование


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

<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
114 9 28

Проектирование архитектуры программы Аноним 05/05/19 Вск 16:19:54 13945191
9657215601f1495[...].png (48Кб, 862x287)
862x287
8d8e4d84b56744c[...].png (30Кб, 677x441)
677x441
Есть необходимость в одно рыло написать программу, которая не маленькая и достаточно сложная, чтобы я смог сразу умом охватить весь набор классов и их взаимосвязей, и начать писать код.
Собственно весь мой предыдущий опыт быдлокодинга был таков, что когда мне надо было что-то накодить, я просто садился и писал код, начиная с какого-то куска, который мне больше нравился.
В данном случае понимаю, что сначала надо всё же желательно весьма детально спроектировать структуры данных и взаимоотношения классов. Как это принято у профессионалов принято делать? Я вижу такие варианты:
1. Написать в блокноте псевдокод - алгоритм вычислений и потока данных. Этот способ имеет недостаток, что словами сложно описать структуру данных, что во что входит. Хотя для описание задачи, в которой главное не данные, а алгоритм, это отличный способ.
2. Нарисовать какие-то произвольные блок-схемы из круглешков и стрелочек или диаграммы UML на листочке/в поверпоинте. На листочке сложно будет что-то править. Да и в поверпоинте заебешься рисовать. Ну и не сказал бы, что большая диаграмма UML или ей подобная является легко читаемой.
3. Не поддаваться желанию проектировать, а сразу кодить. Находишь класс, который 100% должен быть в программе, и у которого мало вариаций реализации, и кодишь его. А потом просто нанизываешь всё остальное на этот класс, скручивая по ниточке в клубок, начиная от наиболее очевидных, ясных, интересных и железно необходимых мест, до мутных, не ясных, не очевидных, многовариантных и скучных мест. Недостаток очевиден: на каком-то этапе можешь понять, что всё не то, и весь код выбрасывается.
4. Пишешь всю программу интерфейсами классов, на этом этапе продумываешь все связи и поток данных, не думая о конкретных реализациях методов и минимально касаясь каких-либо алгоритмов. После того как все интерфейсы написаны и связаны, просто пишешь их реализации, где-то сразу полноценные, где-то заглушки, и на этот хребет постепенно насаживаешь мясо. Сейчас выбрал такой метод (с тремя предыдущими методами я на днях долго кряхтел-кряхтел по этой задаче, но в итоге обосрался) . Основной недостаток, который сразу вижу: чем проще и понятнее получаются связи интерфейсов классов, тем менее оптимальными будут вычисления (т.к. куча лишних аргументов, копирований, лишние вычисления, не оптимальная их последовательность и т.п.). Конечно, преждевременная оптимизация - зло, но есть риск, что потом с полученного скелета уже не соскачить и придётся мириться с неоптимальностью.
Хотел бы услышать каких-то советов, напутствий, предостережений от опытных людей по теме. Писать буду на C#.
Аноним 05/05/19 Вск 20:41:02 13946292
Аноним 05/05/19 Вск 20:59:59 13946363
>>1394629
А что там сейчас у быдла модно?
Аноним 05/05/19 Вск 21:05:09 13946384
>>1394519 (OP)
Твой подход имеет право на жизнь, так что скорее всего получится. Ещё можешь юзать Class Diagram, если в VS работаешь.
Аноним 05/05/19 Вск 22:11:31 13946505
Аноним 05/05/19 Вск 22:51:13 13946586
>>1394650
Пиши на php2
А классами онеже типами пусть всякие хачкелисты пользуются
Аноним 06/05/19 Пнд 07:59:33 13947227
Посоны, правильно ли я понимаю, что тут разный подход.
Вся это функционально- пропозишоновская хуета идет снизу и синтезирует типы, пока не дойдет до нужного уровня абстракции. А вся эта ооп поебень наоборот идет сверху и отсекает всё ненужное, пока не останутся нужные обстракции.
Аноним 06/05/19 Пнд 08:08:41 13947238
>>1394722
тоесть при функционально-пропозишоновской хуете идет доказательство существования пипа, а при ооп идет интуитивный человекозависимый подход, выливающийся в экзостив тестирование
Аноним 06/05/19 Пнд 08:09:12 13947249
>>1394722
тоесть при функционально-пропозишоновской хуете идет доказательство существования пипа, а при ооп идет интуитивный человекозависимый подход, выливающийся в экзостив тестирование
Аноним 06/05/19 Пнд 20:16:17 139486510
>>1394724
Функциональное программирование - сугубо для мамкиных теоретиков, претендующих на илитарность. На практических задачах код ФП будет раз этак в 100 медленнее нормального кода, либо будет нечинаем и кишить багами, но скорее всего и то, и другое вместе пруф https://habr.com/ru/post/317348/
Любая достаточно сложная программа пишется в стиле ООП. Сложной считается программа, написание которой занимает 5 и более рабочих макако-дней. При этом микро функции, не вылазящие из под капота, но критичные к производители, пишут на C или ассемблере.
Аноним 06/05/19 Пнд 20:46:56 139487411
Я в более или менее крупных задачах попеременно пилю сверху вниз и снизу вверх, в середине соединяю. Сначала, например, разделяю задачи на большие модули, которые логически энивей разнесены, и сомнений в этом нет. Потом в каждом модуле определяю элементарные операции, которые так или иначе понадобятся (коннекторы к либам, типы данных), пилю их. Потом исходя из того, что получилось внизу, немножко уточняю уровень модулей, начинаю прописывать интерфейсы между ними. Потом объединяю низкоуровневые компоненты в более крупные, запиливаю забытые новые. И так далее.

При таком подходе самая дрисня получается в середине, но контролировать это гораздо проще, чем в чистых проходах сверху вниз (тогда, как заметил анон выше, получаются дичайше неоптимальные вычисления на низком уровне) и снизу вверх (тогда на верхнем уровне получается мешанина). Кроме того, рефакторить это тоже довольно легко - связанность сравнима с нижним уровнем, но при этом невелик риск что-то поломать.
Аноним 06/05/19 Пнд 22:30:35 139491312
>>1394865
Не слушай этого пидораса. 5 дней у него большая прога, блять. На ассемблере он оптимизирует, лол. ФП у него бажное, ага. Пусть нахуй идет.
Аноним 07/05/19 Втр 19:41:42 139536113
pr.png (45Кб, 882x913)
882x913
Аноним 08/05/19 Срд 20:41:13 139586014
Выражение (мате[...].png (9Кб, 592x66)
592x66
>>1394865
>На практических задачах код ФП будет раз этак в 100 медленнее нормального кода
Доказать можешь? Многие ФП языки намного быстрее чем императивные. Вы пишите проги на питонах, руби, пхп, джавах и прочем, и не говорите что они медленные. Большинство ФП языков не медленней джавы, а некоторые на уровне языка Си.

Если бы изучал алгоритмы, то знал бы что правильные алгоритмы дают прирост производительности в тысячи раз, а использование Си вместо скажем Хаскеля только в 2-4 раза. Правильно написанный код намного важнее скокрости языка. Если тебе и подобным дать самый быстрый язык, ты все равно ничего толкового не напишешь, потому что квалификации нет.

>>1394865
>либо будет нечинаем и кишить багами
Твой код на любом языке будет такой. Потому что у тебя нет правильного мышления, математического, логического, абстрактного, инженерного. В твоих фразах нет причинно-следственных связей, каша какая то. ФП код понятнее любой императивной лапши (ООП, процедурка), потому что он пишется как выражения в математике. Всем понятны математические выражения, их легко читать, легко понимать, легко писать, легко о них рассуждать. Рассуждать об императивной лапше человеку несвойственно. Потому что императивное мышление ближе к машине. Там где императивность там длинные ветви инструкций, изменяемое состояние которое нельзя отследить, и множество ошибок.

Вот выражение на картинке. Оно хоть и выглядит страшно, но легко понимается если немного изучить тему. Его легко читать, все символы имеют четкое значение. Его лекго понять и решить, нужно просто подставить нужные значения и операции вместо букв и знаков. В нем нет хранимого и изменяемого состояния, не нужно держать в голове какая переменная где изменяется.
Аноним 08/05/19 Срд 22:08:52 139591415
>>1395860
У пистона есть невыносимая легкость вкатывания, гигантское количество готовых либ для абсолютно любых задач, которые легко найти, поставить в два клика и вкурить по исходникам за пять минут, даже если нет доков.

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

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

Даже у пхп есть легаси, это нихуевый импульс к жизнеспособности.

А что есть у ФП? Haskell с глючным и тормозным GHC, который даже под вендой работает через жопу, не говоря уж об экзотических платформах или микроконтроллерах. Нет либ. Нет IDE. Нет доков, которые внятно объяснили бы, что под капотом, а не расписывали преимущества зигохистоморфных препроморфизмов. Даже адекватных евангелистов нет, только петушки, которые пытаются кормить своими монадическими испражнениями нормальных людей, которые хотят решить задачу, а не решать задачу.

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

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

ФП блестяще справляется в единственной нише - специальной олимпиаде. Когда ты сначала придумываешь, как написать, чтобы все охуели, ну а потом находишь задачу, которую бы приблизительно мог решать подобный высер. Поскольку получающиеся задачи чаще всего оторваны от реальности полностью, а в некоторых случаях код оказывается и вовсе неприменимым на практике, ФПшники могут выжить только где такой подход считается допустимым - то есть либо в университетах, либо в хипстерских стартапах в начале существования.
Аноним 08/05/19 Срд 22:21:59 139592916
>>1395914
>У пистона есть невыносимая легкость вкатывания
Не правда. Он легкий только в начале. В нем очень много понятий. Посмотри книги Лутца, "Изучаем Python" занимает почти 1300 страниц! Почти любой функциональный язык намного проще. В нем просто нет столько понятий.
Аноним 08/05/19 Срд 22:26:16 139593817
>>1395914
>У си есть скорость рантайма, в точности равная теоретически возможной из-за машинноориентированности
Это все чепуха. Ты врядли сможешь использовать это на полную мощность, потому что не представляешь как писать эффективный код. Эффективный алгоритм на JS будет быстрее твоего кода на Си. Почитай книгу Кормена по алгоитмам, там есть доказательства этому.

Можно написать такой же по скорости код на OCaml к примеру, но он будет короче, понятней, и нем не будет возможности прострелить себе ногу как в Си. Скорость и удобство написания кода важнее скорости исполнения, потому что скорость исполнения можно достичь правильным решением задачи, а если язык кривой и неудобный, то этого уже не исправишь.
Аноним 08/05/19 Срд 22:26:46 139594018
>>1395914
>У джавы есть кроссплатформенность, рантаймы хоть в смарткарте, хоть в суперкомпьютере на какой-нибудь странной платформе.
Представь себе все ФП языки кроссплатформенные.
Аноним 08/05/19 Срд 22:27:08 139594219
>>1395914
>Даже у пхп есть легаси, это нихуевый импульс к жизнеспособности.
ШТА?
Аноним 08/05/19 Срд 22:31:59 139595020
>>1395914
>А что есть у ФП? Haskell с глючным и тормозным GHC, который даже под вендой работает через жопу, не говоря уж об экзотических платформах или микроконтроллерах.
На виндах не сидим. Программисты используют платформы пригодные и предназначенные для программирования. В винде криво реализованы стандарты Си (POSIX), поэтому писать на ней код мучение. И я не уверен, что GHC плохо работает на винде. Скорее всего у тебя руки такие.

>>1395914
>Нет либ. Нет IDE. Нет доков, которые внятно объяснили бы, что под капотом, а не расписывали преимущества зигохистоморфных препроморфизмов.
Это все оправдания неосиляторов. Все есть, кто хочет находит.

>>1395914
>Даже адекватных евангелистов нет, только петушки, которые пытаются кормить своими монадическими испражнениями нормальных людей, которые хотят решить задачу, а не решать задачу.
Ну это уже за гранью. Тебе никто ничем не обязан. Никто не будет тебе насильно рассказывать почему круто использовать Эрланг. Это уже сто раз рассказано. Кто хочет найдет.
Аноним 08/05/19 Срд 22:33:49 139595121
>>1395914
>Lisp? С теми же проблемами плюс зоопарком стандартов, уебищным синтаксисом и минимально приемлемой производительностью только на гипотетической машине, которую никогда не построят?
Это чепуху я уже прокомментировал. Некоторые реализации близки к Си. Это в десятки раз быстрее питона, который ты нахваливаешь. Ты пишешь на медленном языке, и называешь Лиспы, которые быстрее в несколько раз непроизводительными? Лол.
Аноним 08/05/19 Срд 22:37:57 139595322
>>1395914
>ФП блестяще справляется в единственной нише - специальной олимпиаде. Когда ты сначала придумываешь, как написать, чтобы все охуели, ну а потом находишь задачу, которую бы приблизительно мог решать подобный высер. Поскольку получающиеся задачи чаще всего оторваны от реальности полностью, а в некоторых случаях код оказывается и вовсе неприменимым на практике, ФПшники могут выжить только где такой подход считается допустимым - то есть либо в университетах, либо в хипстерских стартапах в начале существования.
Думаю тебе не нужно изучать программирование. Если ты не понимаешь, не хочешь и не можешь понять что такое ФП, то ты и других тем не поймешь. Если что есть теория алгоритмов, Машина Тьюринга, Лямбда-исчисление, - это слова оттуда. Любой человек думающий головой подтвердит, что Лямбда-исчисление намного проще и понятней, и намного мощнее Машины Тьюринга. Лямбда-исчисление это основа ФП, а Машина Тьюринга основа императивного программирования.
Аноним 09/05/19 Чтв 00:58:00 139607923
CPU-DRAM[1].png (61Кб, 639x429)
639x429
>>1395860
>Большинство ФП языков не медленней джавы, а некоторые на уровне языка Си.
Если в Си писать в стиле ФП, то да. Но так на Си никто не пишет.
ФП не предназначен для современных компьютеров. Выделение памяти, явно избыточное порождение новых кусков данных целиком, даже если они вовсе не изменились в результате выполнения функции - всё это ОЧЕНЬ дорогие операции. За последние полвека скорость вычислений ЦП увеличилась в миллион раз. А скорость доступа к оперативной памяти - только в 1000 раз.
Аноним 09/05/19 Чтв 01:14:47 139609524
>>1395929
Лямбда исчисление красиво теоретически, но машина Тьюринга это то, как работает реальный компьютер. Это то, как думает человек в повседневности. Это то, как хранятся любые данные в физическом мире. Пока код пишет и исполняет не святой дух, лямбда-исчисление останется абстракцией для доказательства теорем, а не основой программирования. Ты серьезно считаешь нумералы Черча естественным способом представления чисел? Даже у блядских римлян было более продвинутое представление, это уровень папуасов с палочками. ФПшник это папуас, строящий аэродром из веток, увидев пролетающий авиалайнер. Удобно думать, что груда веток решит все твои проблемы и приблизит тебя к белому человеку без необходимости въебывать как он. Но в реальном мире аэродром из веток не заработает, и авиалайнер не прилетит. Хотя папуасам похуй, они уже ни в чем не нуждаются, и решение задачи не так уж важно, как писалось выше.
Аноним 09/05/19 Чтв 01:24:56 139610525
>>1396095
>Лямбда исчисление красиво теоретически, но машина Тьюринга это то, как работает реальный компьютер.
Зато математика работает по другому. Для того чтобы писать код не нужно знать как работает компьютер, для исполнения кода не процессоре есть интерпретаторы и компиляторы. Только идиот будет писать не на понятном для человека языка, а на языке компьютера. Специально для этого придумали трансляторы.
Аноним 09/05/19 Чтв 01:30:19 139610926
>>1396105
>понятном для человека языка
Математика с последней победы Путина стала априорным знанием? Или по какой причине логика одного языка (математического) выставляется более очевидной, чем логика другого языка (вычисления)?
Аноним 09/05/19 Чтв 01:30:38 139611027
>>1395938
>скорость исполнения можно достичь правильным решением задачи
Опять же, в твоем манямирке разработчик долбоеб и делает ошибку в алгоритме. А в реальности однажды наступает момент, когда из кода выжато все, что можно. Боттлнеки переписаны на асме, все параллельные вычисления идут на всех доступных ядрах и обмазаны векторными инструкциями, окружение ОС пропатчено, чтобы дать несколько лишних микросекунд на блок... Какой нахуй алгоритм, он был оптимизирован так давно, что ты успел забыть об этом. Ты дрочишь профайлер, пытаешься ублажить бранч предиктор перестановкой джампов, колдуешь над кэшем, но все равно твои данные обсчитываются два дня, а генерятся за день, и приходится покупать новое железо за сотни денег.

Но тут приходит функциональный петух, который копирует массив при каждом добавлении элемента, и говорит, что важен только алгоритм.
Аноним 09/05/19 Чтв 01:36:13 139611228
>>1395940
Заведи хачкель на android, а я посмотрю. Ах да, можно же сделать порт, кококо попенсорс. Отлично, вместо своей работы я буду заниматься разбором кода какого-то борщехлеба. Так вот, это нихуя не кроссплатформенность. Кроссплатформенность это когда я могу за полчаса настроить все окружение по гайду и запустить код с минимальными изменениями. В Java/Python/C это есть.
Аноним 09/05/19 Чтв 01:39:04 139611329
>>1395951
И ты еще меня обвиняешь в проблемах с логикой. Еще раз: есть быстрые языки, есть простые языки, есть языки с хорошим комьюнити и множеством либ. Ингода несколько пунктов объединяются в одном языке. А иногда ни одного, как во всех функциональных.
Аноним 09/05/19 Чтв 01:40:36 139611430
>>1396095
>Это то, как думает человек в повседневности.
Нет, это не так. Ты не соображаешь в этом ничего. Человек привык к декларативности. Говоришь ему вычисли корень из числа, и он все понимает и делает. А процессор такого не понимает. Ему нужны инструкции, возьми число, положи в регистр, сделай с ним что то, переложи в другой регистр, и так далее. Тупые инструкции. Так люди не мыслят. Если ты так мыслишь, то у тебя сломанный мозг. Математику изучай лучше.
Аноним 09/05/19 Чтв 01:41:33 139611531
>>1396095
>Это то, как хранятся любые данные в физическом мире.
Чиво? Что ты написал вообще. Как данные связаны с императивными инструкциями? Я же говорю что ты не в теме вообще. Это сразу видно.
Аноним 09/05/19 Чтв 01:42:34 139611732
>>1395950
Ты можешь высрать кучу говна и назвать всех, кто отказывается ее есть, неосиляторами. Но от этого говно не станет менее вонючим. Есть общепринятые критерии качества языка, и есть простой тест на их прохождение - количество юзеров. ФП его не проходит даже если все его языки считать одним целым.
Аноним 09/05/19 Чтв 01:45:50 139611833
>>1396095
>лямбда-исчисление останется абстракцией для доказательства теорем
Представь себе все вокруг абстрация. И компьютер, и процессор, и внутри процессоры десятки, если не сотни и тысячи абстраций. Без абстракций его бы не смогли создать. Или он был бы одноразовым, потому что невозможно было бы его производить массово, изменять его архитектуру, и так далее.

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

Так что вся твоя критика не стоит и выеденного яйца. Абстрации предназначены для решения задач. А ты называешь их проблемой. Это нонсенс. У тебя полное отсутствие абстрактного мышления, которое обязательно для инженера, программиста, математика.
Аноним 09/05/19 Чтв 01:46:14 139611934
>>1396114
>Говоришь ему вычисли корень из числа, и он все понимает и делает
Обернул инструкцию в абстрагирующее имя и после этого инструкция перестает таковой являться - так что ли?
"Ты не в теме" - это как минимум - признак профана, как правило - шарлатана.
Аноним 09/05/19 Чтв 01:46:36 139612035
>>1396114
Ты лукавишь. Если ты вычисляешь корень из маленького числа, то ты просто вспомнишь его и ответишь сразу. Это мемоизация, которую хейтят в ФП за хранение состояния. Для большого числа ты будешь считать в столбик, это итерация. Декоаративности тут ее больше, чем в разделении на процедуры. И никто в здравом уме не будет считать корень рекурсивно, до этого даже додуматься сложно.
Аноним 09/05/19 Чтв 01:49:31 139612136
>>1396118
Ключевая часть фразы - для доказательства теорем. Но ты сделал вид, что ее не заметил.
Аноним 09/05/19 Чтв 01:49:47 139612237
>>1396095
>Ты серьезно считаешь нумералы Черча естественным способом представления чисел?
Если что кодировки единственный способ представлять данные в виде других данных. Кодировки Чёрча один из способов, есть и другие. Чёрч с помощью нескольких символов придумал как реализовывать любые алгоритмы. С помощью его кодировки можно спокойно написать любой язык программирования, потом написать его компилятор на нем же самом. И никто не будет знать, что примитивы реализовано с помощью кодировки Чёрча. Абстрации для того и нужны, чтобы скрывать не важное. Программисту не нужно знать как реализованы примитивы в языке, это нужно только тому кто пишет языки.
Аноним 09/05/19 Чтв 01:53:02 139612338
>>1396095
>ФПшник это папуас, строящий аэродром из веток, увидев пролетающий авиалайнер.
По моему ты просто обиженный тролль. Никто в промышленном коде не использует кодировки Чёрча, нет таких требований. Хотя может и используют. Их используют для реализации языков программирования, для обучения, потому что это хороший пример грамотных абстракций. В ФП языках есть такие высокоуровневые абстрации, которых нет в императивных языках. Хватит писать ерунду.
Аноним 09/05/19 Чтв 01:58:09 139612839
>>1396079
>Если в Си писать в стиле ФП, то да.
OCaml, ML, Лиспы, - они на уровне Си, некоторые алгоритмы на них даже быстрее чем на Си работают. Снова пишут для особо одаренного, что хороший программист на JS напишет программу быстрее чем твоя на Си, потому что ты даже не представляешь как писать правильные алгоритмы, и как писать эффективный код.

>>1396079
>ФП не предназначен для современных компьютеров.
Школьник, хватит писать ерунду. Ты вообще не понимаешь о чем рассуждаешь. Компилятор Хаскеля позволяет реализовывать то, что на императивных языках написать невозможно. Он быстрее большинства императивных языков. И тут ты такой пришел и начинаешь твердить что ФП языки не подходят. Ты смешон.
Аноним 09/05/19 Чтв 02:00:08 139613040
>>1396115
Если ты в функциональном угаре забыл, что такое машина Тьюринга, то напомню, что ее основной частью яаляется лента с данными. Это естественное представление данных как последовательности однородных элементов - букв или цифр на бумаге, звуков в речи, байтов на блине диска. А в чистом лямбда-исчислении данные это избыточные и неудобные конструкции из фактически элементов кода, костыли, появившиеся от недостатка выразительности аксиоматики. Как жесты в языке глухонемых. Здоровый человек может передавать даннын непосредственно руками, но ему удобнее написать их на бумажке. А инвалид вынужден использовать жесты, как лямбдодрочер вынужден использовать нумералы. И да, нумералы придумал Витгенштейн, а гомосек не может изобрести ничего хорошего.
Аноним 09/05/19 Чтв 02:01:15 139613241
>>1396079
>Выделение памяти, явно избыточное порождение новых кусков данных целиком, даже если они вовсе не изменились в результате выполнения функции - всё это ОЧЕНЬ дорогие операции.
Чиво? Откуда тебе знать что дорого, а что нет, ты же не знаешь даже как программы исполняются. Хватит писать свои выдумки.
Аноним 09/05/19 Чтв 02:03:35 139613542
>>1396122
Только в твоем манямирке не нужно. Почитай Джоэля Спольски про протекаюшие абстракции. Когда петух вроде тебя юзает реальный инструмент так, как будто он идеальный, то получается катастрофа. Хороший программист не тот, кто умеет абстрагироваться, а тот, кто умеет не всегда абстрагироваться.
Аноним 09/05/19 Чтв 02:06:04 139613943
>>1396123
А в императивных языках есть важная абстракция, которая называется "состояние". В реальной жизни тоже она есть, а в ФП внезапно либо ее нет, либо ее стремятся уничтожить. И чья парадигма сосет?
Аноним 09/05/19 Чтв 02:07:12 139614144
>>1396079
>За последние полвека скорость вычислений ЦП увеличилась в миллион раз.
Доказать сможешь? Скорость вычислений зависит не только от процессора, но и от эффективности алгоритмов. Предположим язык медленнее чем Си в 4 раза, можно написать алгоритм, который будет эффективней в 10 000 раз, и он будет проще, не нужно ручное управления памятью (в Си утечки памяти всегда), намног сложнее допустить ошибку, код пишется быстрее в 10 раз. Итого пока ты будешь дрочить на свой Си, другой программист напишет на Окамле в 2 раза быстее, и код не будет медленнее, а если даже будет на немного, то это можно будет нивелировать купив за несколько баксов еще один виртуальный сервер.

Твои тексты выглядят смешно, вообще не в тему. Изучи тему лучше. Чтобы не писать ерунду.
Аноним 09/05/19 Чтв 02:07:25 139614245
>>1396128
>Снова пишут для особо одаренного
Ты лучше ответь на пост про производительность выше, а не повторяй свой аутотренинг.
Аноним 09/05/19 Чтв 02:09:02 139614546
>>1396141
>в Си утечки памяти всегда
С точки зрения криворукого олигофрена - несомненно.
Аноним 09/05/19 Чтв 02:12:07 139615047
>>1396141
Напиши мне алгоритм, который отсортирует массив из миллиона элементов быстрее, чем за пятьсот тысяч сравнений, лол. Между тем алгоритм, который сделает это в 10000 раз медленнее тебе даже школьник напишет.
Аноним 09/05/19 Чтв 02:13:08 139615248
>>1396109
>Математика с последней победы Путина стала априорным знанием? Или по какой причине логика одного языка (математического) выставляется более очевидной, чем логика другого языка (вычисления)?
Что это?

>>1396110
Петух тут только один. И он кукарекает что люди мыслят как процессор. Ты же никогда не напишешь код, который уже нельзя оптимизировать. Это как ты выразился, только в твоем манямирке существует. Умник, даже компилятор Си до сих пор успешно оптимизируют, ему сколько там уже 40, 50, 60 лет? А тут петух прибегает и кричит что все уже оптимизировал, и ФП языки теперь у него боттлнек. Иди кукарекай в другом месте.
Аноним 09/05/19 Чтв 02:13:11 139615349
>>1396141
А третий программист напишет на пистоне еще в 10 раз быстрее, так-то.
Аноним 09/05/19 Чтв 02:15:55 139615550
>>1396152
>Ты же никогда не напишешь код, который уже нельзя оптимизировать.
Ох уж эти проекции умственно неполноценного говнокодера.
Аноним 09/05/19 Чтв 02:17:45 139615651
>>1396112
Нахрен мне нужно это поделие андроид. Андроид это худшее что я видел из ОС. Если надо будет, то настрою. И чего вдруг сразу Хаскел. Мне нравятся другие языки. Питухон же медленный, боттлнек ёпта. Или императивные языки не становятся боттлнеком даже если медленнее хаскеля в 10 раз?
Аноним 09/05/19 Чтв 02:18:55 139615752
>>1396156
>НИНУЖНА
As expected.
>И чего вдруг сразу
Ты даже не червь-пидор, ты хуже.
Намного.
Аноним 09/05/19 Чтв 02:19:51 139615853
>>1396113
>ще раз: есть быстрые языки, есть простые языки, есть языки с хорошим комьюнити и множеством либ.
Неужели, а то я не знал. ФП языки и простые, и быстрые, и с множеством либ, и с хорошим комьюнити. Нет в ФП компьюнити таких желчных пустословов как ты.
Аноним 09/05/19 Чтв 02:20:31 139615954
>>1396152
Какой компилятор-то? Если gcc, то неудивительно, учитывая, что у его мейнтейнеров много общего с борщехлебами, хотя язык другой.

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

Но с точки зрения петуха-прикладника, безусловно, можно пилить свои тормозящие абстрактные проекты и не бояться, что пекарня не запустится из-за переполнения стека. Ротому что, слава богу, пока ОС и прошивки пишут на нормальных языках.
Аноним 09/05/19 Чтв 02:22:22 139616055
>>1396158
>эти визгливые и безмозглые гниды ИТТ
>с хорошим комьюнити
Шутку понял.
Смешно.
Аноним 09/05/19 Чтв 02:23:15 139616156
>>1396156
Хорошо, ты не любишь андроид. У тебя же есть мобильный телефон? Запусти хаскелль на своем телефоне. За месяц справишься, убогий?
Аноним 09/05/19 Чтв 02:24:13 139616257
Аноним 09/05/19 Чтв 02:24:42 139616358
>>1396117
>Есть общепринятые критерии качества языка, и есть простой тест на их прохождение - количество юзеров.
И снова ты не прав. Где много юзеров, там много новичков, дебилов, неосиляторов, троллей, и прочего сброда. Мало юзеров потому что только профессионалы. На ФП языках пишут люди с большим опытом, 5-10-20 лет программирования, они знают несколько языков, наелись дерьма с императивщиной, с ООП головного мозга, все это дерьмо видели изнутри. Поэтому их мало. Профи всегда мало. А что на питоне, на Си, на джаве, - школота, все кому не лень, вон весь двач этим забит, все форумы в интернете. Диллетанты 95%.

Так что твой критерий не работает. Как в прочем все твои абсурдные теории.
Аноним 09/05/19 Чтв 02:26:13 139616659
Эх, давно я в зекаче не бывал, это полыхание борщехлеба как бальзам на душу. Оставьте мне его на утро посраться, посоны, а то ж не выдержит и порвется от таких страстей.
Аноним 09/05/19 Чтв 02:28:00 139616860
15572473026980.png (45Кб, 882x913)
882x913
>>1396163
> На ФП языках пишут люди с большим опытом, 5-10-20 лет программирования
Аноним 09/05/19 Чтв 02:29:26 139617161
>>1396119
>Обернул инструкцию в абстрагирующее имя и после этого инструкция перестает таковой являться - так что ли?
Поздравляю, до тебя наконец дошло. Когда ты записываешь памятку что нужно сходить к врачу, ты не пишешь нужно выйти на улицу, сесть в машину/автобус/метро, доехать до такой то улицы, там пройти туда то, в больнице подняться на такой то этаж, и так далее. Ты пишешь просто сходить к такому то врачу, или даже просто сходить в больницу. Это декларативная записать. Она говорить что делать, а не как. ФП языки как и математика используют такой же принцип.
Аноним 09/05/19 Чтв 02:30:48 139617262
>>1396171
Ты болен, тебе нужна помощь.
Аноним 09/05/19 Чтв 02:32:27 139617563
>>1396120
>Ты лукавишь. Если ты вычисляешь корень из маленького числа, то ты просто вспомнишь его и ответишь сразу.
Нет, я просто посмотрю ответ, или вычислю на калькуляторе. Но это показывает то, что люди используют в основном только декларативные знания. Человеку не нужно говорить возьми калькулятор, или напиши алгоритм вычисления корня, ему говоришь что, а не как. А процессору нужно говорить как это делать. Он не понимает декларативных знаний. Для того чтобы понимал придумали высокоуровневые языки.
Аноним 09/05/19 Чтв 02:33:29 139617864
>>1396175
Очень толсто и тупо, в игнор.
Аноним 09/05/19 Чтв 02:37:11 139618765
>>1396120
>Это мемоизация, которую хейтят в ФП за хранение состояния. Для большого числа ты будешь считать в столбик, это итерация. Декоаративности тут ее больше, чем в разделении на процедуры. И никто в здравом уме не будет считать корень рекурсивно, до этого даже додуматься сложно.
Ты даже не осознаешь что несешь. Никто из людей не задумывается как вычисляется корень. Они не думают этими инструкциями. А ведь есть алгоритмы для этого. Просто так вычисление корня не рождается, нужно его найти. Они не задумываются над алгоритмом потому что мыслят декларативно. Чтобы мыслить императивно (инструкциями) нужно держать в голове их состояние. Так никто не делает. Все математические вычисления происходят декларативно. Подставил значения в формулу и все. Не нужны инструкции как при вычислении на процессоре.
Аноним 09/05/19 Чтв 02:37:34 139618866
>>1396175
Твой пример с калькулятором очень показателен. ФПшник без либ и окружения с быстрыми императивными языками под капотом превращается в долбоеба, не умеющего в столбик, когда нет калькулятора. Ты можешь хуесосить императивщиков, но соль в том, что даже целая школа альтернативно одаренных сосницких не заменит один калькулятор.
Аноним 09/05/19 Чтв 02:39:21 139618967
>>1396187
По какой конкретно закрытой формуле ты вычислишь корень из 71656683, например?
Аноним 09/05/19 Чтв 02:40:15 139619068
изображение.png (1631Кб, 1228x1208)
1228x1208
>>1396187
>не задумываются
>потому что мыслят декларативно
Сам все про себя рассказал.
Аноним 09/05/19 Чтв 02:42:39 139619569
>>1396130
Ты невменяемый. Я почти сразу сделал вывод, что у тебя нет способностей к математике, к инженерии, нет абстрактного и алгоритмического мышления. Угловатое мышление. Может ты тролль конечно, это было бы лучше для тебя. Потому что если действительно так рассуждаешь, то мне тебя жаль.

Счастливо оставаться наедине со своим невежеством. Больше отвечать на твои посты не хочется.
Аноним 09/05/19 Чтв 02:46:37 139619770
>>1396195
Школодебил обиделся, какая прелесть :3
Аноним 09/05/19 Чтв 03:03:44 139620271
>>1396195
Ты так подробно рассказал обо мне, давай я теперь опишу тебя. Ты студент технического вуза второго пошиба. Учишься на втором или третьем курсе, на прикладной или вычислительной математике. У вас есть залетный препод с кафедры матлогики, он рассказывает охуительные истории о лямбда-исчислении и теории категорий, а ты смотришь ему в рот и мечтаешь быть таким как он. Ты считаешь одногруппников ограниченными и бездарными, хотя сам даже не лучший в потоке. Ты презираешь их за то, что они уже зарабатывают деньги решением приземленных задач, но сам зарабатывал пока только репетиторством. Тебя считают странным. На твоем гитхабе форки чужих проектов без единого изменения, плюс несколько твоих лаб. Ты на полном серьезе считаешь, что идеализм приведет тебя к величию. Ты часто возмущен тем, что мир не такой, каким должен быть, но ничего не делаешь для его изменения. В глубине души ты понимаешь, что ты ничтожество, и поэтому так болезненно воспринимаешь эту дискуссию.
Аноним 09/05/19 Чтв 03:05:10 139620372
>>1396202
Зато я ебал твою мамашу
Аноним 09/05/19 Чтв 03:16:37 139620573
>>1396202
Судя по тому, что ряд Тейлора для него выглядит страшно, он-таки на первом курсе.
Аноним 09/05/19 Чтв 04:00:58 139621774
Аноним 09/05/19 Чтв 04:12:36 139621875
Аноним 09/05/19 Чтв 04:14:17 139621976
inb4 да чё ты там проектировать собрался, норм пацаны поддерживают, правят и расширяют существующую кодовую базу с говнохитектурой по госту наебизнеса, ты так только к хорошей структуре программ привыкнешь и коллегам по работе будешь качеством совместно высираемого продукта мозги морочить вместо того, чтобы работать; нахуй это сдалось ни им, ни начальнику, ни, в конечном итоге, тебе
Аноним 09/05/19 Чтв 04:32:52 139622177
>>1394519 (OP)
> каких-то советов, напутствий, предостережений
Все равно переделывать будешь. Хоть зарисуйся схемами и диаграммами.
Аноним 09/05/19 Чтв 12:47:55 139632478
>>1396221
Архитектура в том числе нужна для простоты переделывания.
Аноним 09/05/19 Чтв 13:12:21 139632979
>>1396324
Никто не может четко объяснить что такое архитектура. Думаю ты тоже не можешь.
Аноним 09/05/19 Чтв 13:50:17 139634180
>>1396329
Архитектура модуля - это внутри модуля структуры данных и методы классов (все, кроме private). Архитектура программы - то же, но на уровне модулей.
Аноним 09/05/19 Чтв 13:56:58 139634681
>>1396341
Где это написано? Что структуры данных? Ну есть структуры данных, где архитектура, что это такое?
Аноним 09/05/19 Чтв 13:57:58 139634782
image.png (261Кб, 387x499)
387x499
закину дядю боба
как по мне, местами оче даже ничего
начинать с интерфейсов и других абстракций - хорошая идея. откладывай конкретные реализации как можно дольше и не забывай про тесты
Аноним 09/05/19 Чтв 14:02:42 139635083
>>1396341
>методы классов (все, кроме private)
Очередное ООП головного мозга что ли? Я пишу на языке без классов.
Аноним 09/05/19 Чтв 14:03:56 139635384
>>1396329
Я уже кидал название книги>>1396218
Там все расписано.
Аноним 09/05/19 Чтв 14:11:30 139636085
>>1396347
>начинать с интерфейсов
С каких, которые конструкция языка?
Аноним 09/05/19 Чтв 14:13:57 139636286
>>1396350
Поставил тебе класс чтобы ты мог писать с классами.
Аноним 09/05/19 Чтв 14:30:28 139637087
>>1396362
>Поставил тебе класс чтобы ты мог писать с классами.
Нет уж спасибо, сам пиши на классах. Писать на языке с классами это как красить траву в армии. Я такими извращениями не занимаюсь.
Аноним 09/05/19 Чтв 14:35:36 139637688
>>1396370
Классы != наследование, полиморфизм, виртуальные деструкторы и прочая педерастия.
Структура - это хороший и достаточный класс.
Еще нормальные дженерики которые везде говно и нигде не нормальны - и будет норм язык.
Аноним 09/05/19 Чтв 14:36:16 139637889
>>1396350
Для тебя ещё не забаненный хаскеллепетух можешь использовать функции, процедуры или что-там у тебя. Суть не поменяется.
Аноним 09/05/19 Чтв 19:55:53 139653090
image.png (244Кб, 384x499)
384x499
Аноним 09/05/19 Чтв 21:35:59 139657091
>>1396347
>>1396530
Говно нелепое. Аргумент - достаточно сравнить ПЛОХОЙ и ХОРОШИЙ код и убедиться что ПЛОХОЙ код гораздо понятнее и вообще лучше по всем статьям.
Аноним 09/05/19 Чтв 21:54:25 139657492
>>1396570
>достаточно сравнить ПЛОХОЙ и ХОРОШИЙ код и убедиться что ПЛОХОЙ код гораздо понятнее и вообще лучше по всем статьям
Чиво? Для начала расскажи что в твоем понимании плохой и хороший код, а также что в твоем понимании понятный код. Кто сказал что понятный для тебя код будет понятным для других? Может ты диллетант, для которого только говнокод понятный.
Аноним 09/05/19 Чтв 23:06:06 139659593
>>1396574
>плохой код
Тот, который пишешь ты.
>хороший код,
Тот, который пишу я.
Всё просто.
Аноним 09/05/19 Чтв 23:26:37 139660594
пыавпвыапв.png (308Кб, 519x377)
519x377
Аноним 09/05/19 Чтв 23:33:51 139660795
>>1396574>>1396595
Бля, дауничи, в смысле примеры кода которые приводятся в книге.
>Может ты диллетант, для которого только говнокод понятный.
Может ты внушаемый ебанашка для которого понятнее говнокод разосранный в стиле ебанашки Боба. Вот только когда нужно в нем разобраться и слегка поменять начинают подкашиваться коленки и от каждого изменения внезапно все идет по пизде.

Слова мудрости от иностранных коллег:

No, I realize that's what Uncle Bob wants you to think, and at one point when I was naive and inexperienced I thought he was right. With experience comes understanding that this approach is just fundamentally wrong and harmful. It's snakeoil. SOLID and those kinds of things makes your code much worse, in the vast majority of cases.

Uncle Bob and his ilk are snakeoil salesmen telling you to code in ways that causes 10 lines of scaffolding for every line of code that actually does something. Worse, this scaffolding gets in the way of actually modifying the code you care about. You can't just make something work differently anymore because you already split it up into forty different classes and the new behavior you want doesn't fit into that model of the world, so now a simple change becomes a huge refactor of the entire codebase (into another forty classes that will be just as unsuitable a year from now).

In retrospect, now that I'm wiser, it makes perfect sense that this approach is idiotic. Why would you start by introducing barriers and restrictions ("split things into nouns and verbs") at the moment in time when you are the most ignorant about how your program should work (in the beginning). Clearly the smart approach is to keep things simple and avoid any abstraction or architecture that isn't provably necessary. That keeps your options open so that you don't have to embark on a massive adventure just to make some minor changes.

The only way to win this game is to not play. Architecture can't harm you if it's not there. Just don't put that kind of crap in there unless you absolutely have to. This happens sometimes, you really do need abstractions, but the big lie of OOP is that you should start by introducing them right from the get go, when you have no clue about what they will actually need to do.

EDIT: BTW, you may want to watch this: https://www.youtube.com/watch?v=IRTfhkiAqPw for a few easy-to-digest examples of why the OOP style just sucks. This is even more true for bigger examples, but it's understandable that the examples are going to have to be small.

NB Видео просто огонь must watch для каждой малолетней внушаемой ебанашки. Ух как у solid-блядей то от него печет, как в котле у сотоны.
Аноним 09/05/19 Чтв 23:38:15 139660996
>>1396607
ООП сделано для неосиляторов ФП.
Аноним 10/05/19 Птн 00:24:14 139661797
>>1396609
ФП сделано для неосиляторов ЛП.
Аноним 10/05/19 Птн 00:50:36 139663098
Аноним 10/05/19 Птн 01:48:21 139665299
>>1396630
Видимо, логическое программирование.
мимокрокодил
Аноним 10/05/19 Птн 01:50:51 1396654100
>>1396652
Кстати, ЛП легко выразимо средствами ФП (про это вся глава 4.4 в SICP), а вот обратно - хуй там плавал.
Аноним 10/05/19 Птн 02:14:50 1396661101
>>1396630
Лоу приорити, режим в доте 2, в котором ты долбжен сделать 3 победы, если плохо себя вёл в нормальном матчмейкинге.
Аноним 10/05/19 Птн 02:38:41 1396665102
Аноним 10/05/19 Птн 02:46:37 1396667103
Может, ты не знаешь, что такое хорошая архитектура кода, анон, но бгмеозкость плохой архитектуры это не отменяет.
Аноним 10/05/19 Птн 02:47:23 1396668104
Ну ты понял
Аноним 10/05/19 Птн 08:15:03 1396693105
>>1396617
Это родственные декларативные подходы.
Аноним 10/05/19 Птн 13:12:15 1396807106
>>1396665
> Note that it uses if without else or return, drastically slowing it down
Но где же тогда замеры подтверждающие это? Вангую что заявление высосано из хуя, как и все остальные измышления об архитектуре-архитектурке.
Аноним 14/05/19 Втр 20:38:41 1399961107
бамп
Аноним 15/05/19 Срд 08:26:58 1400255108
>>1394519 (OP)
Очень интересный вопрос, задал ты. Я сам про это думал. У меня есть следующие мысли.
Во-первых, сразу всю архитектуру изначально создать не выйдет. Она, на самом деле, продукт эволюции.
Архитектура ПО - это результат того, что сводятся концы с концами. С одной стороны - наши возможности.
Т.е. сами базовые алгоритмы, опорные винтики, которые делают всю работу. А с другой стороны - потребности пользователя.
В смысле - тех людей (возможно программистов), которые будут использовать этот код. Им надо, чтобы всё было бы аккуратно,
понятно, удобно, и прочее.
Я обычно создаю ПО итеративным способом. Сначала начинаю с этих вот опорных винтиков. Пишу их код, что они делают над кое-какими нашими
предметами, над которыми идёт работа. При этом, я не думаю насчёт всех этих винтиков сразу. Просто некий кусочек функциональности.
И при этом, держу в голове, представляю умозрительно те вещи, с которыми придётся иметь дело. Я могу при этом ошибаться.
Вот. Затем, получив кусочек функциональности, я как-то оформляю его архитектурно.
Затем, я беру ещё один кусочек функциональности, реализую его. Тоже архитектурно оформляю.
И вот, начиная с нижестоящих кусочков, образуется архитектура. Я над ней тоже начинаю думать.
И соображения на том уровне, могут привести к изменению в составе кусочков, например.
В общем, всё сначала идёт снизу, потом высокоуровневые архитектурные размышления, потом опять
обратная связь вниз, и так далее. Итерации за итерациями.

Ещё впридачу, я отделяю самые существенные вопросы (которые больше всех значат, и играют роль) от
второстепенных. Я прорабатываю в первую очередь эти существенные вопросы.
Аноним 15/05/19 Срд 09:00:24 1400264109
>>1394519 (OP)
Нужна помощь в понимании темы диплома, которая звучит следующим образом : " ПО для автоматизации процесса доступа к информации через web-сайт для ЧП "Карасик" ". Ткните, хотя бы в какую сторону смотреть.
Аноним 15/05/19 Срд 10:05:17 1400287110
>>1400255
Так проблема не в построении хоть какой-то архитектуры или вылизывании путем многократного переписывания, а в том, как проектировать изначально эффективно, чтобы как можно больше кода написать с первого раза.
Аноним 16/05/19 Чтв 10:14:29 1401018111
Аноним 16/05/19 Чтв 12:16:07 1401084112
Аноним 16/05/19 Чтв 18:32:46 1401304113
>>1395942
Я хз что они тут несут. Пхп сейчас активно яву впитывает - её подходы и решения. Такое не скажешь про язык, который на одном легаси живёт.
Аноним 17/05/19 Птн 04:31:04 1401621114
>>1400287
А это нереально, порой.
Ну можно как-то сконструировать архитектуру изначально, но всё равно обычно модифицировать приходится.
Да и версии софта не случайно существуют. Тут как раз торчат уши итеративной природы разработки софта. Впрочем, у нас итеративно не только софт развивается. Буквально всё вокруг улучшается таким образом. Техника, автомобили, авиация, корабли, здания, технологии. Везде сначала создается простая версия продукта, а потом, по опыту эксплуатации, и с появлением новых технологий, она перерабатывается в новую, улучшенную версию.
Аноним 17/05/19 Птн 23:57:02 1402178115
>>1401621
Грамотная архитектура способствует легкости модифицирования.
При кривой архитектуре проще переписать заново, чем допиливать то, что есть.
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов