Что выбрать с++, с или go для алгоритма?
Go изначально concurrent. Из коробки лучше масштабируется. Например для двух ядер что нибудь вродеvar Data []uint64             //700 млн 64бит uint значений
var Respond []uint64      //значения около 100.000 на каждый запрос
var res chan uint64         //канал передачи годных значений
func TakeFromData(DataPart []uint64, res chan uint64){  //функция фильтра которой передается часть данных и канал годных
       for _, val := range DtaPart{
              if Good(val){
                       res <- val           //пишет годные в канал
              }
      }
}
go TakeFromData(Data[:len(Data)/2], res)    //запускается конкурентно в отдельном потоке
go TakeFromData(Data[len(Data)/2:], res)    // несколько экземпляров
for val:=range res{                    //агрегатор в своем потоке читает из канала по мере фильтрации
    Respond:=append(Respond, val)            //и формирует результат
}Конечно можно написать multithreaded на С, только мороки будет больше.
> но методы в струкртурах это большой у С++ плюс перед С.
Ну кто-то ООП переболел в свое время, кто-то до сих пор болеет, а солидные мужчины не болели никогда. 
> Процессорное время тут очень дорого.
Все три языка подходят. Думайте как разруливать concurrency. Go для этого изначально задумывался. 
И вы не обязаны писать весь проект на c/c++/go. Можете написать затычную часть как микросервис, а сверху повесить хоть Ноду, хоть Python, Хоть PHP.
> + C и C++ можно сделать как модуль для NodeJS или расширение для Php 
Я бы сделал микросервис. И в этом случае go тоже отлично подходит.
Я бы вибирал между С и go. С быстр, у go удобный concurrency.