Обновить
166
0
John Found@johnfound

Инженер автоматизации

Отправить сообщение
Я понял, что post здесь не связан с HTTP-методом POST. В терминологии MVC, которая используется в PHP-фреймворках, post.asm это контроллер обработки запроса на создание сущности "Post". Бизнес-логика — это поведение сущности (в данном случае при ее создании). У вас она перемешана с редиректами и sql-запросами. Например, я хочу создавать post автоматически при некотором событии, как это сделать? Если я просто вызову PostUserMessage, то в случае ошибки он прервет текущий бизнес-процесс и сделает redirect на другую веб-страницу. А если я MySQL хочу использовать, вместо SQLite?

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


Ведь хорошо я написал код или нет, это дело десятое. Примеры плохого кода на ЯВУ тоже хватает. Да и я не претендую на гениального программиста.


Тут важно понять, что ассемблер дает не меньше возможностей, а больше. Хотите например писать на ООП — пожалуйста. Хотите другую парадигму — делайте, язык вам не помешает.


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


А то что надо вручную делать деталей, которые ЯВУ делают за вас, это ведь то, что делает ассемблер лучше чем ЯВУ. Кстати, это тоже вопрос выбора. Можно и так и иначе. Современные ассемблеры очень гибкие системы программирования. Это я выбрал писать деталей вручную и концентрироваться на деталях, потому что это улучшает эффективность кода.


Кстати есть и такой метод программирования, посредством естественного интеллекта — там и ЯВУ знать не нужно. Сформулируется задание человеческим языком и подается, вместе с некоторым количеством денежных знаков естественному интеллекту. После некоторого срока, на выходе получается работающая программа.

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

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


А если я MySQL хочу использовать, вместо SQLite?

В этом проекте, нельзя использовать другая БД кроме SQLite. Это не потому что на ассемблере, а потому что я так решил на стадия проектирования программы Если нужно было, то сделал бы по другому.

А кто вам сказал, что nginx — самый быстрый веб-вервер на С? Изначально у него была задача быть эффективным по памяти, про скорость там ничего нет.

Ну, не знаю, так говорят. Я сам бенчмарки не ставлю.


Но RWASA также эффективнее по памяти. Да и все программы на ассемблере будут пожалуй лучше по памяти, чем эквивалентная программа на ЯВУ.


Потому что в ассемблере контролируется все на самом низком уровне.

Кода будет меньше даже не в 1.5 раза, а раза в 3-4.

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


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

Все что находится в файле source/post.asm это только "бизнес логика" — запись в БГ, очередной постинг юзера. Конечно те процедуры вызываются как результат запроса POST, но сам запрос обрабатывается в другом месте.


Константа sqlGetThreadInfo где-то в другом месте находится, надо догадаться поискать ее в файле showthread.asm.

Ну не знаю, можно и погадать, конечно, но не лучше ли спросить у IDE? — Оно всегда знает где какая константа находится.

Опять таки — почти всегда всё упирается в БД.

А что мешает написать БД на ассемблере? Вот, веб сервер уже написали и он быстрее самых быстрых серверов на C.


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

Это только если программист не знает ассемблер, а знает ЯВУ. Если программист на одинаковом уровне знает ассемблер и ЯВУ, то мои тесты показывают совсем не в десятки раз медленнее, а именно в 1.5, ну пусть будет в 2 раза медленнее. Я ссылку давал наверх к таймлайне.

Ну я же говорил о 1.5 раза, не знаю откуда x2 взялось. :D


А почему не работают на ассемблере? Это просто. Потому что пока действовал закон Мура, писать даже на 50% медленнее было смерти подобно. Всех учили писать быстро плохой код, ведь экспоненциальный прогресс исправить медленный код, а кто первый встанет, тому и тапочки.


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

а 24 часа на php можно написать немаленький проект, причём он будет с БД, кешированием, email-рассылками, полноценным логированием, и т.д.

Это так, только потому что некто уже все это написал и не за 24 часа, а намного медленнее.


То же самое и на ассемблере. Теперь каждый может взять мои исходники и за 24 часа написать чего нибудь, которое работает на FastCGI. Или например — парсер markdown можно написать за 10 минут. Как? А просто — его уже есть в FreshLib библиотеке.


А если что нибудь все еще не написано, то некто должен потратить некоторое время и не 24 часа.

Писать с нуля, конечно можно, но зачем? Это то же самое если писать с нуля на C (без libc и других библиотек). На ассемблере есть библиотеки, и повторное использование кода никто не запрещал. А когда пишешь все на ассемблере и соблюдаешь правила структурного программирования, то код постепенно накопляется и писать становится все легче и легче.


У меня почти весь этот код собран в библиотеке FreshLib, которая разрабатывается как часть и основа Fresh IDE. Там многое чего есть — от обработка строк и масивов, до OOP библиотека графического интерфейса (неокончена).


Поэтому, такие небольшие проекты как AsmBB пишутся быстро и приятно. Правда, несколько медленнее (примерно на 50%) чем на PHP, но и результат несравнимо лучше. Можно посмотреть история версии насчет реальные сроки разработки до v1.0;

Можно конечно — и мою и не мою.


Не моя: RWASA — современный веб сервер, с TLS, быстрее nginx-а. Автор: Jeff Marrison из Австралии.


Моя: AsmBB — Простой форумный движок. Хорошо масштабируем, благодаря использования FastCGI протокола. (И FastCGI фреймворк к нем, которой можно использовать для других веб приложении).

Ну, php немножко. Первая версия MiniMag была на php, потом переписал на ассемблере и получилась MiniMagAsm.


А вот в Delphi и Perl вообще то эксперт. Этим на хлеб-соль зарабатывал долгие годы.

Почему?

Сложно объяснить. Главное, потому что на ассемблере, человек программирует не так как на ЯВУ. Кстати, поэтому ни в коем случае ассемблер нельзя учить изучая результаты компиляции.


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

Есть такие куски.

Изучение php с каким-либо фреймворком на начальном уровне потребует недели вашего времени, а написание программ на нем будет идти быстрее просто в силу большей выразительности языка.

Я оттуда возвращаюсь.

В данный момент — да, но если изучить php, то вы быстро отобьете время, на это потраченное, и улетите вперед по сравнению с собой же старым.

Нет не улечу вперед. Я оттуда возвращаюсь.

Дело в том, что все так, а результат в целом, все таки нельзя сделать на ЯВУ. Никак не получится. Ну, не считая, если переводить от ассемблер на C 1 в 1. Да и тогда результат будет ужасен как читаемость кода, больше и несколько медленнее.

В реальной жизни никто так делать не будет, так что такие тесты совершенно ничего не доказывают.

Никто? Ведь я именно так и делаю. И знаю многих, которые так делают. И поэтому такие тесты многое доказывают.

Такие синтетические тесты типа: "Берем функцию, пишем на C и на ассемблере", совершенно не демонстрируют преимущества ассемблера. Я всегда утверждал, что сравнивать надо реальные, законченные программы, которые делают что то разумное и полезное.


Дело в том, что человек не пишет код на ассемблере так как пишет его на ЯВУ. Некоторые вещи, которые на ассемблере просты и логичны, на C такими не являются. Поэтому, неоптимизированные программы на ассемблере всегда получаются намного быстрее чем неоптимизированные программы на C/C++. Мои тесты (а я проводил такие несколько раз) показывают от 5 до 80 раз большее быстродействие ассемблерных программ.


Далее, если сделать несколько итерации оптимизации, программа на C/C++ можно довести до примерно 20..50% медленнее, чем та же программа на ассемблере. Но только если код на ассемблере известен.


В итоге, код на C получается совершенно нечитаемым, а код на ассемблере вполне читаемым.


Но какая часть программ оптимизируют так глубоко? И как поддерживается так глубоко оптимизированная программа?

А теперь самое интересное. Итоговое время загрузки страницы вашего форума на ассемблере составляют 300ms. То есть обрабатывается запрос за 10ms или за 30ms — это уже не столь важно, поскольку по итогу для конечного пользователя запросы обрабатываются одинаково быстро/медленно.

Это имеет значение для моего кармана, когда оплачиваю хостинг.


Ну и еще штука… попробуйте подсчитать сколько стоит поддержка кода на ассемблере и на каком-нибудь javascript/php.

А мне на ассемблере дешевле, потому что я ассемблер знаю, а js/php нет.


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


На ассемблере такие страсти не бывают. Были некоторые баги, которые исправил во время альфа и бета тестов и все. Теперь, программировать придется только когда понадобится новую функциональность добавлять.

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

А я, вообще то, критики не боюсь. И не потому что мой код совершен, а потому что это один из путей сделать его лучше. Но конечно, это возможно только если критика конструктивная.

Вы не ответили на вопрос, где именно применяется ваш сайт и форум на ассемблере, кроме как на нем висит лично ваш блог?

Мне это достаточно. Стоит мне копейки (ну 2.50€ в месяц). Всякие Слэшдот-эффекты не грозят (а были). А монетизировать все это мне совершенно недосуг. Скачивайте и пользуйтесь на здоровье.


Вы никогда не пробовали потестировать с какой скоростью пережимается видео на процессоре 5-летней давности и на шестом поколении от интела, которое по частоте в полтора раза ниже? И сколько при этом тратится энергии?

Крохи, все это! Крохи! Ну сделают еще в 5 раз быстрее, ну и что? Экспоненциальный прогресс уже не будет! Вы разницу между экспоненциальной и линейной функцией знаете?

Где применяется сайт и форум на ассемблере? Какие задачи он решает?

А жрет он ресурсов очень и очень немного. И CPU и памяти. А на хостинге, они оплачиваются и недешево.


По моим прикидкам, при всех равных условиях, форум на ассемблере может обслуживать от 5 до 10-ти раз больше посетителей, чем такой же, но на PHP.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность