New Developer, Ну если N*N массив то можно и одним циклом заполнить, N*M не выйдет.
const N = 5;
let arr = new Array(N);
for (let i = 0; i < N * N; i++) {
let col = ~~(i / N);
if (!Array.isArray(arr[col])) arr[col] = new Array(N);
arr[col][i % N] = 0;
}
Ну если вы продожлаете настаивать, то значит не до конца понимаете.
Можете представить что эти вызовы параллельно выполняются, без promise, async/await нет возможности синхронизировать выполнение этих блоков
amg0461, нельзя из колбека туда перейти, он асинхронно выполняется, вы же пытаетесь мыслить в синхронной парадигме.
После вызова fs.readFile, не дожидаясь результата, поток выполнения продолжит движение к блоку 3
У копии внутренние компоненты могут быть абсолютно любые и скорее всего самые дешёвые. Если есть возможность, рекомендую заказать оригинальный на ebay, AliExpress из Китая.
На Fortran тоже софта осталось полно, это аргумент в пользу его изучения? В топе 15 он все еще из-за поддержки уже написанных продуктов, нет никаких объективных факторов писать новые проекты на нем, а тем более изучать как первый язык.
Для начала стоило бы попробовать оптимизировать PHP код. Если этих мер недостаточно, то напишите отдельный микросервис на Golang.
С бекенда на PHP сможете общаться с ним через REST Api. (то есть выносите трудоемкую процедуру в отдельный сервис)
Еще можно воспользоваться готовым мостом через websocket https://github.com/spiral/goridge