Need advice about which tool to choose?Ask the StackShare community!

C lang

13.4K
4.2K
+ 1
247
Erlang

1.3K
739
+ 1
327
Add tool

C vs Erlang: What are the differences?

Introduction:

C and Erlang are two programming languages that have distinct features and are used for different purposes. Understanding the key differences between these two languages can help developers choose the right language for their specific needs. In this comparison, we will highlight six major differences between C and Erlang.

  1. Memory Management and Concurrency Model: One of the fundamental differences between C and Erlang lies in their memory management and concurrency models. C is a low-level language that requires manual memory management, where developers are responsible for allocating and freeing memory. On the other hand, Erlang is a high-level language that provides automatic memory management, utilizing a garbage collector to release memory when it is no longer needed. Additionally, Erlang relies heavily on lightweight processes and message passing for concurrency, while C relies more on threads and shared memory.

  2. Type System: C has a static type system where types need to be explicitly declared and checked at compile-time. Any type mismatches can lead to compilation errors. Erlang, on the other hand, has a dynamic type system where types are determined at runtime. This flexibility allows Erlang to be more tolerant of type errors and enables easier code modification and development of highly dynamic systems.

  3. Error Handling: In C, error handling is primarily done using error codes or return values. Developers need to explicitly check and handle these errors, which can be error-prone and require extra code. In Erlang, error handling is based on the concept of "let it crash" where processes are isolated and can fail independently. This approach allows for fault-tolerant systems as errors are handled by restarting processes or forwarding to a supervisor process.

  4. Concurrency and Parallelism: C does not have built-in support for explicit concurrency and parallelism. Developers need to rely on external libraries or system-specific APIs to implement concurrent or parallel code. On the other hand, Erlang provides lightweight processes and message passing as a built-in feature, making it easier to write concurrent and parallel code. Erlang's processes can run on multiple cores, allowing efficient utilization of hardware resources.

  5. Pattern Matching: Pattern matching is a powerful feature in Erlang that is not present in C. Erlang's pattern matching allows for concise and elegant code to handle different data structures, making it easier to work with complex data manipulations and algorithmic implementations. C, on the other hand, requires more manual coding and manipulation to achieve similar functionality.

  6. Distribution and Fault Tolerance: Erlang has built-in support for distributed computing, allowing processes to communicate seamlessly across multiple nodes in a network. This capability enables the development of fault-tolerant and scalable systems. In contrast, C does not provide native support for distributed computing, and developers need to rely on external libraries or frameworks to achieve distributed functionality.

In summary, C and Erlang differ in memory management, type systems, error handling, concurrency models, pattern matching, and distributed computing. Understanding these differences helps in choosing the appropriate language based on the specific requirements of the project.

Advice on C lang and Erlang
Needs advice
on
C langC langJavaJava
and
PythonPython

Actually, I'll add, C++ and C# as well.

Well, I'm into Computer Science since 1996, so I understand a bit of everything plus a lot of different OSs, I study 10 hours per day every day. However back in the 90s we didn't have books or universities about programming, all were passed through if you knew somebody in that profession. Which I did and in that time, he showed me .NET and MySQL, and that offered a lot of jobs also Java. Today you have a lot of options but I'm already discarding new languages as I believe they will jot succeed.

My always dream was to create game, and software. I don't understand all programming concepts and I'm studying all languages at the same time, so I'm heavy loaded. But that keeps me more aware.

I made a choice: use Python for everything but if you want performance, apps, security, compatibility, Multiplatform. What should I choose? The real question here is: which language should I go 100% and that language will teach me all I need about programming BUT without getting lost in that language forever (I discard any Assembly possibility) and one that has full documentation, support and libraries.

In my experience: I found a lot of info for python and java. But hardly I have ever found anything for C lang, C++ and, what about C# (it's only for Windows, is it easy, I saw a lot of documentation). Thanks!!

See more
Replies (3)
Recommends
on
CythonCythonPythonPython

I would go with Python, it is fast to code, readable and very powerful without giving you too much to think about (e.g. memory management). If you're looking for speed, Cython is a fairly good way to get there, since Python is a C-based language it can be compiled to C using Cython and will get you a very significant boost in speed! You can also make use of C libraries if you prefer. The only downside to Cython over Python is that it is compiled and not interpreted, which can make debugging a pain (but you might find yourself doing most of the debugging in Python before switching to Cython). C languages are a bit of a pain to read up on (API, libraries etc.), but Stack Overflow has you covered in most cases!

See more
Recommends
on
C++C++PythonPython

Python can be linked with C++ both language are similar in many places (using same libraries or concepts to build libraries) - except memory and static types. C++ is more assembler and have different syntax (need 3x-4x coding more).

If you do engineering it is perfect stack - Java is to slow in coding (4x more code) and little faster than Python - whatever it is hard to mix Java/C++ what is easy Python/C++.

In the most program you do not need super performance but if you need C++ is the best and have rich Object Language much richer than Java and more poor than Python. Python is true object language - everything is object.

Whatever sometimes more important is framework than language for specific use.

See more
Recommends
on
JavaJava

All programming languages are cross platform except Java, but even that's not that bad. Performance: C(++), Go, Rust, Java, Ada, OCaml, Haskell, C# Apps: JS, TS, ReScript, Go, C(++), Java, Haskell, C#, Dart Security: Java, Go, Rust, COBOL, C(++), C# Compatibility: Java(due to it's VM), C(++), Go, C# Libraries: Java, Go, C(++), C# Documentation: Java, C(++) (since they are mature) What do you mean without getting lost in the language? I'd not advocate for C(or C++), considering it's hard to understand the memory, and it's for those into programming theory. You are looking for all you need. Go for Java, it has a library for everything, it has a reasonable learning curve, and pretty much you are going to encounter it everywhere- it's like a programming black hole you can't escape.

See more
Needs advice
on
C langC lang
and
RustRust

When working on Python, I noticed that Python is only useful for data science. I am looking for a programming language that:

  • Is different in terms of paradigm(I used OO only in Python for data analysis, I want something that is a different paradigm to improve my coding skills)

  • Is excellent at systems engineering

  • Will enhance my Python projects and basically make Python better

  • Has an excellent future, will skyrocket in terms of demand

  • Is very performant, excellent performance

  • Has a steep learning curve(it's because I want a simple language and an advanced language in my stack)

I found these two languages to fit my needs, and I need help choosing. Which would be better for me considering my needs

See more
Replies (2)
Jayson Pamittan
Software Engineer - Level III at Arch Global Services · | 2 upvotes · 56.1K views
Recommends
on
RustRust

Rust is more useful compared to C on some cases like in web assembly. C is more tedious to code. Rust is modern and has a lot more of opportunities. If you are also investing for the future I recommend Rust over C.

See more
Recommends
on
RustRust

It must be Rust, It absorbs the advantages of other languages,safe, good performance and develop quickly, The community is also growing and active. I think there are some difficulties to learn Rust, but when you have mastered it, you will write good programs than C lang

See more
Youcef Benamare
Needs advice
on
C langC langC++C++
and
C#C#

include include int main(){ char name[10], pasword[10]; printf("enter you user name :"); gets(name); printf("enter your pasword : "); gets(pasword); printf("your name : %s \n your password : %s \n", name, pasword); if ( name != "youcef") { printf("name undefined\n"); } else { printf("finde name"); }

}

his not working

See more
Replies (2)
Richard Rios
Senior Software Engineer · | 5 upvotes · 137.9K views
Recommends
on
C langC lang

You will want to do a few things here. First, replace gets with fgets. Then, you're going to want to use strcmp from string.h to compare the input with the desired result. The code listed below has been updated with a working example with the previously mentioned recommendations. This isn't perfect and there are other ways to accomplish the same task. Explore other options that are available when you have a chance and see if you can improve on this example.

#include <stdio.h>
#include <string.h>

int main()
{ 
    char name[10], 
    pasword[10]; 

    printf("enter you user name :"); 

    // Use fgets as gets is insecure and can easily lead to buffer overflow exploits
    fgets(name, sizeof(char) * sizeof(name), stdin);

    // Remove \n from fgets stdin read with null character so as to not have to include
    // in strcmp later.
    name[strlen(name) - 1] = '\0';

    printf("enter your pasword : "); 
    fgets(pasword, sizeof(char) * sizeof(pasword), stdin);

    printf("your name : %s \n your password : %s \n", name, pasword);

    // If strcmp result > 0 || < 0 it's not a match
    if (strcmp(name, "youcef") != 0) 
    { 
        printf("name undefined\n"); 
    } 
    else 
    { 
        printf("finde name"); 
    }
}
See more
Recommends
on
C langC lang

Dear, Yusuf You can't use if statement to compare two strings, but you can use strcmp() function which means string compare The behavior of strcmp function is: If (string1 < string2)? Then: return a negative value. If (string1 > string2)? Then: return a positive value.

If(string1 == string2)? Then: return (0).

So, you can modify this statment to: if(strcmp(name,"Yousef") != 0) printf("name undefined\n");

else printf("find name");

But, In this case there is one logic problem that (strcmp) function don't ignore the letter case. For example: If you input name : yousef

The first letter here (y) is small, but in the comparing statement above is capital, So the result will be "name undefined", but in fact "yousef" = "Yousef".

To solve this problem you should use stracasecmp() function. This function ignore the letter case while comparing. The code will be: if(strcasecmp(name,"Yousef") != 0) printf("name undefined\n");

else printf("find name");

Attention: Include string libreary after using these functions to skip any problem may be found.

include

may Allah bless you ^_^

See more
Decisions about C lang and Erlang

Python has become the most popular language for machine learning right now since almost all machine learning tools provide service for this language, and it is really to use since it has many build-in objects like Hashtable. In C, you need to implement everything by yourself.

C++ is one of the most popular programming languages in graphics. It has many fancy libraries like eigen to help us process matrix. I have many previous projects about graphics based on C++ and this time, we also need to deal with graphics since we need to analyze movements of the human body. C++ has much more advantages than Java. C++ uses only compiler, whereas Java uses compiler and interpreter in both. C++ supports both operator overloading and method overloading whereas Java only supports method overloading. C++ supports manual object management with the help of new and delete keywords whereas Java has built-in automatic garbage collection.

See more
Russtopia Labs
Sr. Doodad Imagineer at Russtopia Labs · | 0 upvote · 200.2K views

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%

https://gogs.blitter.com/RLabs/xs

See more
Get Advice from developers at your company using StackShare Enterprise. Sign up for StackShare Enterprise.
Learn More
Pros of C lang
Pros of Erlang
  • 68
    Performance
  • 49
    Low-level
  • 35
    Portability
  • 28
    Hardware level
  • 19
    Embedded apps
  • 13
    Pure
  • 9
    Performance of assembler
  • 8
    Ubiquity
  • 6
    Great for embedded
  • 4
    Old
  • 3
    Compiles quickly
  • 2
    OpenMP
  • 2
    No garbage collection to slow it down
  • 1
    Gnu/linux interoperable
  • 60
    Concurrency Support
  • 60
    Real time, distributed applications
  • 56
    Fault tolerance
  • 35
    Soft real-time
  • 31
    Open source
  • 21
    Functional programming
  • 20
    Message passing
  • 15
    Immutable data
  • 13
    Works as expected
  • 5
    Facebook chat uses it at backend
  • 4
    Practical
  • 4
    Knowledgeable community
  • 3
    Bullets included

Sign up to add or upvote prosMake informed product decisions

Cons of C lang
Cons of Erlang
  • 5
    Low-level
  • 3
    No built in support for concurrency
  • 2
    Lack of type safety
  • 2
    No built in support for parallelism (e.g. map-reduce)
    Be the first to leave a con

    Sign up to add or upvote consMake informed product decisions

    - No public GitHub repository available -

    What is C lang?

    What is Erlang?

    Some of Erlang's uses are in telecoms, banking, e-commerce, computer telephony and instant messaging. Erlang's runtime system has built-in support for concurrency, distribution and fault tolerance. OTP is set of Erlang libraries and design principles providing middle-ware to develop these systems.

    Need advice about which tool to choose?Ask the StackShare community!

    What companies use C lang?
    What companies use Erlang?
    See which teams inside your own company are using C lang or Erlang.
    Sign up for StackShare EnterpriseLearn More

    Sign up to get full access to all the companiesMake informed product decisions

    What tools integrate with C lang?
    What tools integrate with Erlang?

    Sign up to get full access to all the tool integrationsMake informed product decisions

    Blog Posts

    What are some alternatives to C lang and Erlang?
    Java
    Java is a programming language and computing platform first released by Sun Microsystems in 1995. There are lots of applications and websites that will not work unless you have Java installed, and more are created every day. Java is fast, secure, and reliable. From laptops to datacenters, game consoles to scientific supercomputers, cell phones to the Internet, Java is everywhere!
    Python
    Python is a general purpose programming language created by Guido Van Rossum. Python is most praised for its elegant syntax and readable code, if you are just beginning your programming career python suits you best.
    C#
    C# (pronounced "See Sharp") is a simple, modern, object-oriented, and type-safe programming language. C# has its roots in the C family of languages and will be immediately familiar to C, C++, Java, and JavaScript programmers.
    Objective-C
    Objective-C is a superset of the C programming language and provides object-oriented capabilities and a dynamic runtime. Objective-C inherits the syntax, primitive types, and flow control statements of C and adds syntax for defining classes and methods. It also adds language-level support for object graph management and object literals while providing dynamic typing and binding, deferring many responsibilities until runtime.
    Rust
    Rust is a systems programming language that combines strong compile-time correctness guarantees with fast performance. It improves upon the ideas of other systems languages like C++ by providing guaranteed memory safety (no crashes, no data races) and complete control over the lifecycle of memory.
    See all alternatives