ウィルス作成に使われていた未知のプログラム言語はCだった、だがしかし

Soumenkov 氏によれば、Duqu フレームワークは C 言語で書かれており、MSVC 2008でオプション「/O1」と「/Ob1」を付与してコンパイルされていたという。また同氏は、未知のコードとされていた部分は、「OO C」と呼ばれるオブジェクト指向 C 言語の一種で書かれているようだ、とも発表している。

http://japan.internet.com/webtech/20120322/4.html

一見、Cでかかれてたのかなぁンだとか思うところではありますが、"OO C"ってのがかなり気になるわけです。
どう見ても Object-Oriented C の略でありますが、そのまんま過ぎて、そんなプログラミング言語聞いたことないわけです。
でぐぐっとしてみたわけですが、それっぽいのはこれでしょうか。

ooc is an object-oriented programming language which is implemented with a source-to-source translator to pure C99. It supports classes, abstract functions, foreach, ranges, etc. It intends to be modern, modular, extensible, yet simple and fast.

ooc programming language

プログラム例がないのでちょっとわからないのですが、他のオブジェクト指向Cとは違うような雰囲気の説明ぶりであります。

追記:現在アクティブなページっぽいところ

ooc is a modern, self-hosting, object-oriented, functional-ish, high-level, low-level sexy programming language, starring closures, interfaces, enums, garbage collection.. It strives to be powerful, modular, extensible, portable, yet simple and fast.

The main implementation ooc is rock, a self-hosting compiler which translates ooc sources to C source code, and then use a C compiler to produce an executable.

Programming with ooc - Wikibooks, open books for an open world

んーでもリンク切れがありますね。
シンタックスはこんな感じ。
http://docs.ooc-lang.org/language/syntax.html

Diving into OOC, a fun new programming language | Ralree
んーたしかにオブジェクト指向
以下oocの例のコピペ。長いので。

include stdlib // Need for rand() and srand()
include time   // Need for time()
c_rand: extern(rand) func -> Int
c_srand: extern(srand) func(seed: Int) -> Int
c_time: extern(time) func(when: Int) -> Int
 
import structs/ArrayList
 
//operator as (b: Boo) -> Int
 
Boat: abstract class {
  name: String
  status: Int // I'd like this to be an enum, but oh well
 
  // a horn sound.  Needs to be implemented by children
  horn: abstract func
  crash: abstract func
}
 
// a new class of boat
Failboat: class extends Boat {
  init: func (=name) { this status = 3 }
  init: func ~withStatus (=name, =status){}
 
  horn: func 
  {
    printf("SS %s blares his horn: FAIL, %u!\n", this name, this status)
  }
 
  crash: func {
    if(!status) return
    status -= 1
    match status {
      case 0 => printf("%s sinks!\n", name)
      case 1 => printf("%s starts leaking!\n", name)
      case => printf("%s is unharmed!\n", name)
    }
  }
}
 
// Crash the boats together.
// This will test their strength based on status
// Return value will be -1 if u wins, 0 for continuation,
//   1 if v wins, and 2 if both destroy eachother
operator + (u,v: Boat) -> Int
{
  printf("Kapow! %s and %s crash into eachother!\n", u name, v name)
  [u,v] as ArrayList<Boat> each(Boat crash)
  printf("%s: %d, %s: %d\n", u name, u status, v name, v status)
  return match {
    case(u status + v status == 0) => 2 
    case(u status == 0) => 1
    case(v status == 0) => -1
    case => 0
  }
}
 
main: func {
  // Seed rand like we usually do in C
  c_srand(c_time(null))
  boat_a := Failboat new("Godzilla", c_rand() % 4)
  boat_b := Failboat new("Megalon", c_rand() % 4)
 
  // DANGER AHEAD!  SOUND THE HORNS!
  [boat_a, boat_b] as ArrayList<Boat> each(Boat horn)
 
  // Fight fight fight!
  status := 0
  while(!status) {
    status = boat_a + boat_b
  }
 
  // Determine the victor
  printf("The Battle is over.  ")
  match status {
    case 2 => "Both Boats are destroyed!" println()
    case 1 => printf("%s is the victor", boat_b name)
    case -1 => printf("%s is the victor", boat_a name)
  }
}

よりオブジェクト指向言語っぽくてシンプルそうにも見えますね。