А теперь давайте спросим сколько времени потребовалось сделать такой форум на Assembler, и сколько времени потребуется на эту же задачу «порочным» «PHP, ну или на один из модерных языках Питон, Руби, Node.js и т.д.» программистам.
Я написал сколько времени потребовалось мне. Но ничего не могу сказать насчет Питон и Руби. Если вы можете, то скажите и сравним.
Но мне кажется, что на ЯВУ, очень грязно и с багами, написать будет быстрее, а вот вылизать все и выдать работающий продукт уже будет вполне сравнимо.
Это из за рендеринга markdown. Каждый пост обрабатывается отдельно. А markdown вообще транслируется весьма сложно — там два прохода по тексту и сложные правила. BBcode было бы на порядок быстрее.
Вот, кажется все отредактировано хотя бы грамматически. Наверное некоторые предложения все-таки звучат не по русски, но я здесь ничего не могу сделать — Русский я учил в школе, примерно 35 лет назад. Читаю много, понимаю все, но падежи для меня очень сильное колдунство :D (их в Болгарском языке нет).
Большое спасибо: gearbox и Protonicus! Ребята, вы мне помогли очень сильно!
Всем привет. Извините насчет плохого Русского языка. Некоторые товарищи отредактировали и прислали исправления. Постараюсь все исправить как можно быстрее.
А почему такая железая уверенность в отсутствии уязвимостей?
Потому что проще код, меньше уязвимостей. У ассемблерного кода намного меньше слоев и зависимостей. Поэтому и уязвимостей меньше.
Конечно нет программы без бага. Но репорты свободно принимаются. Если найдете уязвимость или баг, то сможете увидеть как быстро она исчезнет. Потому что код на ассемблере поддерживается просто и быстро. :P
Но к написанию «разумных, полезных (кому-то, кроме самого автора), законченных программ» всё это отношения не имеет.
Весь домен flatassembler.net сейчас хостится на сервер RWASA. Никакие проблемы не возникали с момента перемещения. Даже стало лучше — раньше были проблемы с https, теперь уже нет. Раньше были проблемы с производительности. Теперь уже нет.
AsmBB, совершенно работающая система малого форума, на которой можно организовать форум. И он будет "просто работать". Инсталляция отнимает 5 минут. Поддержки не требуется. Хостинг будет стоит наверное вдвое меньше, чем такой же форум на PHP. Уязвимостей нет. Скрипт-киды не прорвутся. (Кстати, знаете как умер wasm.ru?)
Я понял, что post здесь не связан с HTTP-методом POST. В терминологии MVC, которая используется в PHP-фреймворках, post.asm это контроллер обработки запроса на создание сущности "Post". Бизнес-логика — это поведение сущности (в данном случае при ее создании). У вас она перемешана с редиректами и sql-запросами. Например, я хочу создавать post автоматически при некотором событии, как это сделать? Если я просто вызову PostUserMessage, то в случае ошибки он прервет текущий бизнес-процесс и сделает redirect на другую веб-страницу. А если я MySQL хочу использовать, вместо SQLite?
А, кстати, даже факт обсуждения моего кода в этом ключе, показывает что я прав и идея написания веб программ на ассемблере вполне имеет право на жизнь.
Ведь хорошо я написал код или нет, это дело десятое. Примеры плохого кода на ЯВУ тоже хватает. Да и я не претендую на гениального программиста.
Тут важно понять, что ассемблер дает не меньше возможностей, а больше. Хотите например писать на ООП — пожалуйста. Хотите другую парадигму — делайте, язык вам не помешает.
При том, хорош мой код или не очень, а вы его очевидно поняли, раз можете его критиковать и приводить цитаты что там не понравилось и почему. Значит, читаемость не так уж и плохая как принято считать.
А то что надо вручную делать деталей, которые ЯВУ делают за вас, это ведь то, что делает ассемблер лучше чем ЯВУ. Кстати, это тоже вопрос выбора. Можно и так и иначе. Современные ассемблеры очень гибкие системы программирования. Это я выбрал писать деталей вручную и концентрироваться на деталях, потому что это улучшает эффективность кода.
Кстати есть и такой метод программирования, посредством естественного интеллекта — там и ЯВУ знать не нужно. Сформулируется задание человеческим языком и подается, вместе с некоторым количеством денежных знаков естественному интеллекту. После некоторого срока, на выходе получается работающая программа.
Размер кода, который надо писать руками, напрямую связан со скоростью разработки, о которой вы говорили.
Нет, не так. Программист не машинистка. Он прежде всего придумывает код, а потом пишет. А код на ассемблере придумывается быстрее если считать строк. Просто потому что эти строки придумываются одновременно по нескольких.
А если я MySQL хочу использовать, вместо SQLite?
В этом проекте, нельзя использовать другая БД кроме SQLite. Это не потому что на ассемблере, а потому что я так решил на стадия проектирования программы Если нужно было, то сделал бы по другому.
Кода будет меньше даже не в 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 с каким-либо фреймворком на начальном уровне потребует недели вашего времени, а написание программ на нем будет идти быстрее просто в силу большей выразительности языка.
А сервер уже есть: RWASA.
Весь flatassembler.net работает на нем.
Там у меня сайт тоже на ассемблере: https://fresh.flatassembler.net
Правда, там MiniMagAsm работает.
Я написал сколько времени потребовалось мне. Но ничего не могу сказать насчет Питон и Руби. Если вы можете, то скажите и сравним.
Но мне кажется, что на ЯВУ, очень грязно и с багами, написать будет быстрее, а вот вылизать все и выдать работающий продукт уже будет вполне сравнимо.
Это из за рендеринга markdown. Каждый пост обрабатывается отдельно. А markdown вообще транслируется весьма сложно — там два прохода по тексту и сложные правила. BBcode было бы на порядок быстрее.
Вот, кажется все отредактировано хотя бы грамматически. Наверное некоторые предложения все-таки звучат не по русски, но я здесь ничего не могу сделать — Русский я учил в школе, примерно 35 лет назад. Читаю много, понимаю все, но падежи для меня очень сильное колдунство :D (их в Болгарском языке нет).
Большое спасибо: gearbox и Protonicus! Ребята, вы мне помогли очень сильно!
Всем привет. Извините насчет плохого Русского языка. Некоторые товарищи отредактировали и прислали исправления. Постараюсь все исправить как можно быстрее.
Потому что проще код, меньше уязвимостей. У ассемблерного кода намного меньше слоев и зависимостей. Поэтому и уязвимостей меньше.
Конечно нет программы без бага. Но репорты свободно принимаются. Если найдете уязвимость или баг, то сможете увидеть как быстро она исчезнет. Потому что код на ассемблере поддерживается просто и быстро. :P
Весь домен flatassembler.net сейчас хостится на сервер RWASA. Никакие проблемы не возникали с момента перемещения. Даже стало лучше — раньше были проблемы с https, теперь уже нет. Раньше были проблемы с производительности. Теперь уже нет.
AsmBB, совершенно работающая система малого форума, на которой можно организовать форум. И он будет "просто работать". Инсталляция отнимает 5 минут. Поддержки не требуется. Хостинг будет стоит наверное вдвое меньше, чем такой же форум на PHP. Уязвимостей нет. Скрипт-киды не прорвутся. (Кстати, знаете как умер wasm.ru?)
А, кстати, даже факт обсуждения моего кода в этом ключе, показывает что я прав и идея написания веб программ на ассемблере вполне имеет право на жизнь.
Ведь хорошо я написал код или нет, это дело десятое. Примеры плохого кода на ЯВУ тоже хватает. Да и я не претендую на гениального программиста.
Тут важно понять, что ассемблер дает не меньше возможностей, а больше. Хотите например писать на ООП — пожалуйста. Хотите другую парадигму — делайте, язык вам не помешает.
При том, хорош мой код или не очень, а вы его очевидно поняли, раз можете его критиковать и приводить цитаты что там не понравилось и почему. Значит, читаемость не так уж и плохая как принято считать.
А то что надо вручную делать деталей, которые ЯВУ делают за вас, это ведь то, что делает ассемблер лучше чем ЯВУ. Кстати, это тоже вопрос выбора. Можно и так и иначе. Современные ассемблеры очень гибкие системы программирования. Это я выбрал писать деталей вручную и концентрироваться на деталях, потому что это улучшает эффективность кода.
Кстати есть и такой метод программирования, посредством естественного интеллекта — там и ЯВУ знать не нужно. Сформулируется задание человеческим языком и подается, вместе с некоторым количеством денежных знаков естественному интеллекту. После некоторого срока, на выходе получается работающая программа.
Нет, не так. Программист не машинистка. Он прежде всего придумывает код, а потом пишет. А код на ассемблере придумывается быстрее если считать строк. Просто потому что эти строки придумываются одновременно по нескольких.
В этом проекте, нельзя использовать другая БД кроме SQLite. Это не потому что на ассемблере, а потому что я так решил на стадия проектирования программы Если нужно было, то сделал бы по другому.
Ну, не знаю, так говорят. Я сам бенчмарки не ставлю.
Но RWASA также эффективнее по памяти. Да и все программы на ассемблере будут пожалуй лучше по памяти, чем эквивалентная программа на ЯВУ.
Потому что в ассемблере контролируется все на самом низком уровне.
А я никогда не говорил, что код на ассемблере будет больше в 1.5 раза. Почитайте мои посты наверх.
Все что находится в файле
source/post.asmэто только "бизнес логика" — запись в БГ, очередной постинг юзера. Конечно те процедуры вызываются как результат запроса POST, но сам запрос обрабатывается в другом месте.Ну не знаю, можно и погадать, конечно, но не лучше ли спросить у IDE? — Оно всегда знает где какая константа находится.
А что мешает написать БД на ассемблере? Вот, веб сервер уже написали и он быстрее самых быстрых серверов на C.
Это только если программист не знает ассемблер, а знает ЯВУ. Если программист на одинаковом уровне знает ассемблер и ЯВУ, то мои тесты показывают совсем не в десятки раз медленнее, а именно в 1.5, ну пусть будет в 2 раза медленнее. Я ссылку давал наверх к таймлайне.
Ну я же говорил о 1.5 раза, не знаю откуда x2 взялось. :D
А почему не работают на ассемблере? Это просто. Потому что пока действовал закон Мура, писать даже на 50% медленнее было смерти подобно. Всех учили писать быстро плохой код, ведь экспоненциальный прогресс исправить медленный код, а кто первый встанет, тому и тапочки.
Но дело в том, что экспоненциального прогресса уже не будет. Будет максимум линейный, да и то вряд ли. Темпы разработки несколько снизятся и рано или поздно писать все на ассемблере станет выгодным. Кстати, оно уже и так выгодно, только предрассудки все еще тормозят процесс.
Это так, только потому что некто уже все это написал и не за 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 вообще то эксперт. Этим на хлеб-соль зарабатывал долгие годы.
Сложно объяснить. Главное, потому что на ассемблере, человек программирует не так как на ЯВУ. Кстати, поэтому ни в коем случае ассемблер нельзя учить изучая результаты компиляции.
Есть такие куски.
Я оттуда возвращаюсь.
Нет не улечу вперед. Я оттуда возвращаюсь.