local base = _G
module("Object")
local CObject = {
position = nil,
text = "Some text"
}
function CObject:init()
self.position = {}
self.position.x = 0
self.position.y = 0
end
function new()
local res = {}
base.setmetatable(res, { __index = CObject })
res:init()
return res
end
Такой вопрос: в чем основное преимущество асинхронных серверов ... перед связкой асинхронный сервер + любой язык
---
перед связкой асинхронный сервер + любой язык - не совсем понятно, что Вы имеете в виду. Асинхронный сервер или нет, это одно, а вот асинхронный или нет доступ к данным у ЯП - это совсем другое. Я уверен, что Вас больше интересует второе.
Вся прелесть, сложность и проблемы в асинхронном подходе возникают по одной и той-же причине. Результат на запрос приходит не сразу, а асинхронно. Это даёт огромное уменьшение времени отклика программы, если в ней используется результат нескольких не зависимых IO операций. Во всех остальных случаях синхронный подход проще, при таком-же времени доставки ответа. (IO - это работа с файлами, внешними api итп )
Nodejs имеет один существенный недостаток - у неё один процесс выполнения. По этому тяжелые вычисления на ней значительно уступают в производительности PHP на многопроцессорных/ядерных системах. (это дело легко обходится воркерами итп, но это еще один недостаток)
erlang, java и несколько других языков не имеют вышеуказанной проблемы.
Nodejs по сравнению с PHP имеет еще 2 важных плюса:
1. в ноде можно хранить данные, таймеры, дескрипторы итп между запросами. По этому это намного эффективнее различных механизмов кэширования PHP.
2. в ноде не тратится время на подгрузку кода.
>>В асинхронном сервере в единый момент времени обрабатывается столько запросов, сколько есть воркеров и в PHP/nginx точно также.
Не верно, ни в первом ни во втором случае. В асинхронном сервере есть всего один поток, который обрабатывает любое количество запросов, в nginx - точно так-же. О PHP - другая история, но на каждый запрос нужен как минимум thread или process.
От Python там останется только синтаксис, а синтаксис для МК - не главное.
Чего только люди не придумают, чтобы на C не писать :)
with open('/tmp/workfile', 'r') as f:
read_data = f.read()
if f.closed:
print('File closed')