забыли еще добавить
7. а еще Гоу не нужен
у него такой уровень избыточности что .. быстрым в производительности он может быть разве что в сравнении с питоном
но не С/C++
вот взял с компилятора ГО файл gofmt
там открыл функцию в IDA
https://pastebin.com/ysDbcSMU
.text:00000000004ED6A0 ; void __cdecl encoding_binary___littleEndian__Uint16(encoding_binary_littleEndian *.this, __uint8 b, uint16 _r1)
.text:00000000004ED6A0 public encoding_binary___littleEndian__Uint16
.text:00000000004ED6A0 encoding_binary___littleEndian__Uint16 proc near
.text:00000000004ED6A0
.text:00000000004ED6A0 var_8 = qword ptr -8
.text:00000000004ED6A0 .this = qword ptr 8
.text:00000000004ED6A0 b = __uint8 ptr 10h
.text:00000000004ED6A0 _r1 = word ptr 28h
.text:00000000004ED6A0
.text:00000000004ED6A0 mov rcx, fs:0FFFFFFFFFFFFFFF8h
.text:00000000004ED6A9 sub rsp, 8
.text:00000000004ED6AD mov [rsp+8+var_8], rbp
.text:00000000004ED6B1 lea rbp, [rsp+8+var_8]
.text:00000000004ED6B5 mov rbx, [rcx+20h]
.text:00000000004ED6B9 test rbx, rbx
.text:00000000004ED6BC jnz short loc_4ED6F7
.text:00000000004ED6BE
.text:00000000004ED6BE loc_4ED6BE: ; CODE XREF: encoding_binary___littleEndian__Uint16+5F↓j
.text:00000000004ED6BE ; encoding_binary___littleEndian__Uint16+64↓j
.text:00000000004ED6BE mov rax, [rsp+8+.this]
.text:00000000004ED6C3 test rax, rax
.text:00000000004ED6C6 jz short loc_4ED6F0
.text:00000000004ED6C8 mov rax, [rsp+8+b.len]
.text:00000000004ED6CD cmp rax, 1
.text:00000000004ED6D1 jbe short loc_4ED6E9
.text:00000000004ED6D3 mov rax, [rsp+8+b.array]
.text:00000000004ED6D8 movzx eax, word ptr [rax]
.text:00000000004ED6DB mov [rsp+8+_r1], ax
.text:00000000004ED6E0 mov rbp, [rsp+8+var_8]
.text:00000000004ED6E4 add rsp, 8
.text:00000000004ED6E8 retn
.text:00000000004ED6E9 ; ---------------------------------------------------------------------------
.text:00000000004ED6E9
.text:00000000004ED6E9 loc_4ED6E9: ; CODE XREF: encoding_binary___littleEndian__Uint16+31↑j
.text:00000000004ED6E9 call runtime_panicindex
.text:00000000004ED6EE ; ---------------------------------------------------------------------------
.text:00000000004ED6EE ud2
.text:00000000004ED6F0 ; ---------------------------------------------------------------------------
.text:00000000004ED6F0
.text:00000000004ED6F0 loc_4ED6F0: ; CODE XREF: encoding_binary___littleEndian__Uint16+26↑j
.text:00000000004ED6F0 call runtime_panicwrap
.text:00000000004ED6F5 ; ---------------------------------------------------------------------------
.text:00000000004ED6F5 ud2
.text:00000000004ED6F7 ; ---------------------------------------------------------------------------
.text:00000000004ED6F7
.text:00000000004ED6F7 loc_4ED6F7: ; CODE XREF: encoding_binary___littleEndian__Uint16+1C↑j
.text:00000000004ED6F7 lea rdi, [rsp+8+.this]
.text:00000000004ED6FC cmp [rbx], rdi
.text:00000000004ED6FF jnz short loc_4ED6BE
.text:00000000004ED701 mov [rbx], rsp
.text:00000000004ED704 jmp short loc_4ED6BE
.text:00000000004ED704 encoding_binary___littleEndian__Uint16 endp
и нашел туже функцию в самом языке
https://golang.org/src/encoding/binary/binary.go
func (littleEndian) PutUint16(b []byte, v uint16) {
_ = b[1] // early bounds check to guarantee safety of writes below
b[0] = byte(v)
b[1] = byte(v >> 8)
}
ни С ни С++ такой избыточности бы не создали
о каких тогда серверах и прочих можно говорить в сравнении с С/C++ ?
разве что в скорости стартапов для быстрого старта, а дальше нанимать плюсовиков что бы это переписывали на нормальный язык