Может я не прав, но по моему мнению для нормальной параллельной работы надо как минимум анализировать количество процессоров в системе и возможность переносить какие-то работы на оборудование. Как дела с анализом оборудования в Java?
Чем больше прослоек, тем больше глюков. Я когда исходники смотрю, то все время Черномырдина цитирую. «Вино мы пьем чтобы было здоровье, а здоровье нужно чтобы пить водку». Или подругому «Фреймвокри мы подключаем для удобства и бытсроты, а удобство и быстрота позволяет кплеать много ошибок»
В ООП много косяков. Лично меня постоянно сбивает с толку время жизни програмного объекта и реального объекта.
Если уже есть реальный файл на диске, от зачем писать
File f = new File();? Эта конструкция тянет на создание файла, но на самом деле нет.
Если уже заведен клиент компании в базе данных, то зачем писать
Client cl = new Client();? Эта конструкция тоже претендует на создание чего-то нового, но клиент-то уже есть.
знакомый студент недавно пытался на ООП моделировать геометрические фигуры. По началу все шло ок, но когда дошло до определения пересечений фигур, то начался треш, угар и вопли «да кто придумал этот ооп».
Один из выводов теории Рамсея и Семереди — на больших данных всегда можно найти закономерность, даже если данные случайные. И поэтому трудно отличить случайную закономерность от реальной.
По любому получается, что надо
-либо искать альтернативу поломанному модулю на ходу,
-либо останавливаться,
-либо… как в VB ничего не делать, просто тупо идти дальше «on error resume next».
… иногда машина может ехать даже если что-то отвалилось
Я имел в виду — внутренний механизм, как ООП реализовано. Я имею в виду — как определяется принадлежность к классу, механизмы определения, какой метод вызывать из какого родителя, и тд. Все эти алгоритмы зависят от компилятора и вклиниться обычно невозможно. Возник какой-нибудь конфликт и возникает ошибка доступа к памяти access violation. Как его обрабатывать зачастую непонятно.
Но наблюдая за развитием языка Perl, я обнаружил, что там предлагается практически самому сделать «машину классов» из более мелких кирпичиков на ходу. Там такие ошибки можно обрабатывать и включать рефлексию подсоединяемого модуля.
Мне кажется, что «машина классов» слишком жесткая и слишком много на себя берет. Должна быть возможность её модифицировать и прослушивать, чтобы избежать неуправляемых падений.
Слашыл, что в .net есть какие-то возможности на работающем сервере заливать новую версию проекта с новыми библиотеками без остановки сервера. При этом какие-то старые сессии все еще могут доработать полностью на старой версии, а новые сессии открываются с новым набором библиотек. Делается через сервис shadow copy.
По моим наблюдениям в самом мышлении есть так называемый статический аспект. Несмотря на то, что всё меняется, люди думают, что какие-то вещи или идеи постоянны. Даже умные разработчики компиляторов и баз данных не учитывают изменчивость. Надо изначально в программу закладывать взаимодействие с очень изменчивыми внешними структурами.
3) Выбросить все наработки, заново сформировать ТЗ, команду. И перезапустить весь проект с актуализированными требованиями и на современных технологиях.
Это возможно, если требования и люди стоят на месте. А в большой конторе, пока будешь собирать требования, уже успеется несколько новых законов выйти, смениться коллектив и перетусоваться бизнес структура. Очень трудно собрать требования для «бурлящего нечто».
Я может не понимаю суть, но на практике часто сталкиваюсь с этим границами и падениями. У нас вперемешку дельфовский ооп с тучей компонентов, COM, RemObject, ActiveScript, ISAPI, WinAPI. Исходников примерно 2 GB. Скомпилированных модулей где-то 400 Мб.
Когда есть под сотню модулей и они компилируются на разных машинах с немного разными версиями библиотек и опциями компилятора, то увы начинаются неотлавливаемые глюки.
algolist.manual.ru/maths/graphs
Всяких коротких языковых конструкций можно еще в perl`e подсмотреть.
Если уже есть реальный файл на диске, от зачем писать
File f = new File();? Эта конструкция тянет на создание файла, но на самом деле нет.
Если уже заведен клиент компании в базе данных, то зачем писать
Client cl = new Client();? Эта конструкция тоже претендует на создание чего-то нового, но клиент-то уже есть.
знакомый студент недавно пытался на ООП моделировать геометрические фигуры. По началу все шло ок, но когда дошло до определения пересечений фигур, то начался треш, угар и вопли «да кто придумал этот ооп».
Вот тут товарищ нечаянно вывел МНК из Баейса.
habrahabr.ru/post/276355
-либо искать альтернативу поломанному модулю на ходу,
-либо останавливаться,
-либо… как в VB ничего не делать, просто тупо идти дальше «on error resume next».
… иногда машина может ехать даже если что-то отвалилось
Но наблюдая за развитием языка Perl, я обнаружил, что там предлагается практически самому сделать «машину классов» из более мелких кирпичиков на ходу. Там такие ошибки можно обрабатывать и включать рефлексию подсоединяемого модуля.
Это возможно, если требования и люди стоят на месте. А в большой конторе, пока будешь собирать требования, уже успеется несколько новых законов выйти, смениться коллектив и перетусоваться бизнес структура. Очень трудно собрать требования для «бурлящего нечто».