Need advice about which tool to choose?Ask the StackShare community!
C++ vs Electron: What are the differences?
C++: Has imperative, object-oriented and generic programming features, while also providing the facilities for low level memory manipulation. C++ compiles directly to a machine's native code, allowing it to be one of the fastest languages in the world, if optimized; Electron: Build cross platform desktop apps with web technologies. Formerly known as Atom Shell, made by GitHub. With Electron, creating a desktop application for your company or idea is easy. Initially developed for GitHub's Atom editor, Electron has since been used to create applications by companies like Microsoft, Facebook, Slack, and Docker. The Electron framework lets you write cross-platform desktop applications using JavaScript, HTML and CSS. It is based on io.js and Chromium and is used in the Atom editor.
C++ and Electron are primarily classified as "Languages" and "Cross-Platform Desktop Development" tools respectively.
"Performance" is the primary reason why developers consider C++ over the competitors, whereas "Easy to make rich cross platform desktop applications" was stated as the key factor in picking Electron.
Electron is an open source tool with 74.4K GitHub stars and 9.72K GitHub forks. Here's a link to Electron's open source repository on GitHub.
According to the StackShare community, Electron has a broader approval, being mentioned in 213 company stacks & 366 developers stacks; compared to C++, which is listed in 194 company stacks and 357 developer stacks.
As a personal research project I wanted to add post-quantum crypto KEM (key encapsulation) algorithms and new symmetric crypto session algorithms to openssh. I found the openssh code and its channel/context management extremely complex.
Concurrently, I was learning Go. It occurred to me that Go's excellent standard library, including crypto libraries, plus its much safer memory model and string/buffer handling would be better suited to a secure remote shell solution. So I started from scratch, writing a clean-room Go-based solution, without regard for ssh compatibility. Interactive and token-based login, secure copy and tunnels.
Of course, it needs a proper security audit for side channel attacks, protocol vulnerabilities and so on -- but I was impressed by how much simpler a client-server application with crypto and complex terminal handling was in Go.
$ sloc openssh-portable Languages Files Code Comment Blank Total CodeLns Total 502 112982 14327 15705 143014 100.0% C 389 105938 13349 14416 133703 93.5% Shell 92 6118 937 1129 8184 5.7% Make 16 468 37 131 636 0.4% AWK 1 363 0 7 370 0.3% C++ 3 79 4 18 101 0.1% Conf 1 16 0 4 20 0.0% $ sloc xs Languages Files Code Comment Blank Total CodeLns Total 34 3658 1231 655 5544 100.0% Go 19 3230 1199 507 4936 89.0% Markdown 2 181 0 76 257 4.6% Make 7 148 4 50 202 3.6% YAML 1 39 0 5 44 0.8% Text 1 30 0 7 37 0.7% Modula 1 16 0 2 18 0.3% Shell 3 14 28 8 50 0.9%
Pros of C++
- Performance197
- Control over memory allocation105
- Cross-platform95
- Fast94
- Object oriented82
- Industry standard56
- Smart pointers46
- Templates37
- Raii16
- Gui toolkits16
- Flexibility13
- Control13
- Generic programming13
- Metaprogramming11
- Hardcore9
- Many large libraries5
- Full-fledged containers/collections API5
- Simple5
- Performant multi-paradigm language4
- Large number of Libraries4
- Way too complicated3
- Plenty of useful features1
- Close to Reality1
Pros of Electron
- Easy to make rich cross platform desktop applications68
- Open source52
- Great looking apps such as Slack and Visual Studio Code13
- Because it's cross platform7
- Use Node.js in the Main Process3
Sign up to add or upvote prosMake informed product decisions
Cons of C++
- Slow compilation8
- Unsafe8
- Over-complicated6
- Fragile ABI6
- No standard/mainstream dependency management5
- Templates mess with compilation units4
- Too low level for most tasks3
- Compile time features are a mess1
- Template metaprogramming is insane1
- Segfaults1
- Unreal engine1
Cons of Electron
- Uses a lot of memory18
- User experience never as good as a native app8
- No proper documentation4
- Does not native4
- Each app needs to install a new chromium + nodejs1
- Wrong reference for dom inspection1