Need advice about which tool to choose?Ask the StackShare community!
C vs Git: What are the differences?
C: One of the most widely used programming languages of all time. ; Git: Fast, scalable, distributed revision control system. Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
C can be classified as a tool in the "Languages" category, while Git is grouped under "Version Control System".
"Performance" is the top reason why over 52 developers like C, while over 1441 developers mention "Distributed version control system" as the leading cause for choosing Git.
Git is an open source tool with 28.2K GitHub stars and 16.3K GitHub forks. Here's a link to Git's open source repository on GitHub.
According to the StackShare community, Git has a broader approval, being mentioned in 3934 company stacks & 4787 developers stacks; compared to C, which is listed in 64 company stacks and 251 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 lang
- Performance67
- Low-level48
- Portability35
- Hardware level28
- Embedded apps19
- Pure13
- Performance of assembler9
- Ubiquity8
- Great for embedded5
- Old4
- Compiles quickly3
- No garbage collection to slow it down2
- OpenMP2
- Gnu/linux interoperable1
Pros of Git
- Distributed version control system1.4K
- Efficient branching and merging1.1K
- Fast960
- Open source845
- Better than svn728
- Great command-line application368
- Simple306
- Free291
- Easy to use232
- Does not require server222
- Distributed27
- Small & Fast22
- Feature based workflow18
- Staging Area15
- Most wide-spread VSC13
- Disposable Experimentation11
- Role-based codelines11
- Frictionless Context Switching7
- Data Assurance6
- Efficient5
- Just awesome4
- Easy branching and merging3
- Github integration3
- Possible to lose history and commits2
- Compatible2
- Flexible2
- Team Integration1
- Light1
- Easy1
- Fast, scalable, distributed revision control system1
- Rebase supported natively; reflog; access to plumbing1
- Flexible, easy, Safe, and fast1
- CLI is great, but the GUI tools are awesome1
- It's what you do1
- Phinx0
Sign up to add or upvote prosMake informed product decisions
Cons of C lang
- Low-level5
- No built in support for concurrency3
- Lack of type safety2
- No built in support for parallelism (e.g. map-reduce)2
Cons of Git
- Hard to learn16
- Inconsistent command line interface11
- Easy to lose uncommitted work9
- Worst documentation ever possibly made7
- Awful merge handling5
- Unexistent preventive security flows3
- Rebase hell3
- When --force is disabled, cannot rebase2
- Ironically even die-hard supporters screw up badly2