If you like DNray Forum, you can support it by - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 and more...

 

Pros and Cons of C++, Java, and Python

Started by antivir, Oct 18, 2023, 12:16 AM

Previous topic - Next topic

antivirTopic starter

Which programming languages are suitable for implementing different tasks and on which operating systems?
I've already searched on Google and Wikipedia, but couldn't find the information I was looking for. According to my research, C++, Python, and Java seem to be the most versatile options, including for website development (PHP). Each language is designed for specific purposes, but C++ is known to be quite complex and challenging.

I found limited information about Java on Wikipedia, while Python is used by platforms like YouTube. However, I am skeptical of some online reviews that promise quick success or exaggerated claims. Despite this, I'm considering starting with Python based on the information available. It's important to note that a good programmer should have knowledge of multiple languages, but starting with one can still be beneficial.
I appreciate any guidance or suggestions as I don't have anyone else to ask and I'm aware of the resources available, including books and online tutorials.
  •  


ZoriWser

The selection of a programming language does depend a lot on the specific tasks you want to accomplish. It's also worth noting that there's often significant overlap in the capabilities of languages -- many tasks can be accomplished in several different languages. But each language has its strengths. I'll outline some major ones:

Python: This is often a go-to recommendation for beginners due to its readability and simplicity. Considering you're starting, this would be a good option. Python is excellent for web and internet development, scientific computing, data analysis, artificial intelligence, and more. Python works well on all major operating systems (e.g., Linux, Windows, MacOS).

Java: Java is versatile and widely used, particularly for building large enterprise-scale business applications. Java is also the main language used for Android app development. It's platform-independent due to its "write once, run anywhere" principle, which means it can be run on any device that has a Java Runtime Environment (JRE).

C++: As you noted, C++ can be complex for beginners, but it's very powerful. It's used a lot in game development, real-time systems, and high-performance applications. C++ can be used on virtually any platform including Windows, MacOS, and Linux.

JavaScript: JavaScript is incredibly popular for web development -- it's essential for front-end development and is increasingly being used on the back-end via Node.js. JavaScript can run in any web browser, which means it's essentially platform-independent.

C#: This language is widely used in game development with the Unity engine. It's also used a lot in Windows desktop applications and for developing Microsoft's .NET platform. As of my knowledge cutoff in 2021, C# can be used on Windows, Linux, and MacOS.

PHP: This language is commonly used for web development and can run on any major operating system, as it's typically run on the server side. However, other languages like Python and JavaScript (with Node.js) are growing in popularity for web development.

Swift: This is the primary language for developing iOS and macOS applications. However, it's not as universal as Java or Python because it's mainly used within the Apple ecosystem.

Ruby: Often used for web development, Ruby is praised for its readability and programmer-friendly syntax. Ruby on Rails, a popular web development framework, is written in Ruby. It's often used to build web apps and is compatible with various operating systems, including MacOS, Windows, and Linux.

Go (Golang): Developed by Google, Go is praised for its simplicity and efficiency, serving well in cases where performance matters, such as large-scale network programming and big data tools. Go can be used on several platforms, including Linux, Windows, and MacOS.

Rust: If you're concerned about creating highly secure and concurrent systems, Rust is an excellent choice. It prevents many bugs that C and C++ programs are prone to. It has become popular in system development and can be used on any platform that C can run on, which is nearly any operating system.

Kotlin: A statically typed language developed by JetBrains which is fully interoperable with Java. It also has an easier and more readable syntax. Kotlin is officially supported by Google for Android development and can also be used in backend development.

TypeScript: A variant of JavaScript with static types, often used with large-scale JavaScript applications. It's transpiled to JavaScript and can run wherever JavaScript runs.

R: Specifically designed for statistics and data analysis. It's a great tool for data scientists and statisticians and has broad application in academia and industry. It runs on MacOS, Windows, and Linux.

Shell script (Bash): Not a full-featured language in the way the others are, but knowing it is vital if you're working with Unix or Linux systems (including MacOS). Knowledge of shell scripting allows for proficient and efficient use of the terminal or command line, automating many tasks and aiding in system management.

Perl: Once a giant in web development, Perl has slightly decreased in popularity over time but is still used for system administration, network programming, and for legacy web development and scripting tasks. It's compatible with various operating systems including Linux, Windows, and MacOS.

Scala: Scala is a static type language that runs on the JVM (Java Virtual Machine), which means it's highly interoperable with Java. It's often praised for balancing object-oriented and functional programming languages. Scala is often used where concurrency, distribution and large datasets (Big Data) are common, such as data analysis and data streaming.

MATLAB: It's very popular in academia, especially in fields that require numerical and computational work such as engineering, physics, and mathematics. It's great for mathematical modelling, simulation, algorithm development, and data analysis.

Objective-C: This was the primary programming language for iOS and OS X applications before Swift was introduced. Although it's still used in some legacy systems, Swift is generally recommended for new Apple application development.

SQL (Structured Query Language): While not a traditional programming language, SQL is crucial to understand because it's used to communicate with databases. It can run on virtually any platform that has a SQL database, which includes most servers.

Dart: Developed by Google and used to create mobile, desktop, and web applications. Dart gained popularity along with the Flutter framework, which is used for developing natively compiled applications for mobile (iOS, Android), web, and desktop from a single codebase.

One final advice: instead of trying to learn several languages at once, focus on becoming proficient in one language. This will allow you to fully understand programming concepts, which you can then apply to other languages. Essentially, it's not the syntax of a language that's most important, but the problem-solving skills you develop along the way.
  •  

AbdulAhad

Consider starting with C++ only if you have a strong desire for very complex tasks. Although the language itself is not more complicated (in fact, in some aspects it is more logical and flexible than others, free of unnecessary syntactic additions), it does require a longer learning curve and more experience before achieving adequate proficiency. Since it is a native language, it is not as easy to quickly build something from scratch, although for each specific task, there are numerous projects and solutions available online. It truly requires a love for craftsmanship.

Other languages can be compared to steroids, but this is not necessarily a negative trait. Personally, I write code in C++, C#, and I am considering learning Java. However, I have no interest in Python.

When choosing a programming language, it is important to note that popularity and promotion alone do not determine its suitability for every individual. Some languages may not have progressed as much as others, unlike C# and Java, which have been heavily supported by large companies. The technical excellence of C/C++ has made them automatic solutions in many fields, contributing to their popularity. Additionally, there are certain languages that gain popularity due to the desire for open-source solutions, often with the help of sponsors.

It's worth mentioning that Herbert Schildt is a relatively minor author. Furthermore, don't waste time on learning things you don't need, as it can be time-consuming. For example, there is no need to simultaneously delve into desktop development, web development, and Linux. However, having a solid foundation in different technologies is always beneficial.

C/C++ is cross-platform, but it requires different compilers for different operating systems, meaning different frameworks for each platform. When comparing the weightiness of the language with others, it is on par. Personally, I believe it should be learned before any other language, but that is just my opinion.

Oracle Java is cross-platform, including compatibility with Google Android OS. Microsoft .NET (VB, C#, F#, etc.) is unofficially cross-platform, with some limitations and without WPF when using Mono. Apple Objective-C is the language used by Apple in its operating system.

Before deciding whether to aim for speed or deeper knowledge, consider if the tasks you want to accomplish are compatible with each other.

Perhaps going towards Java would be a better choice than Python, in my humble opinion. If web development is your goal, start by understanding HTML, CSS, and PHP, and then decide if you need additional skills in Flash, Java, or server-side work.
  •  

shakilbds

Programming can be done with any language, so the idea of starting with the basics is not necessary. Two things should be kept in mind: choose an area that interests you, and focus on aspects beyond the programming language. For example, game development requires a passion for games, knowledge of game design principles, effective communication skills, and perseverance. On the other hand, web design benefits from having a sense of aesthetics, the ability to multitask, knowledge of colors and their compatibility, as well as understanding promotion strategies. Different fields have unique challenges that don't solely involve writing code. Larger teams may have specialized roles that reduce the need to tackle these challenges individually, but it's still important to consider them, especially when starting out.

Consider exploring various programming languages, while excluding esoteric ones that may not be practical without extensive expertise. The options are vast, ranging from Python and C++ to Java, Go, ECMAScript, NASM, and C#. Most languages have applicability across different domains like game development, web design, banking, and transportation. Moreover, each field often utilizes multiple tools simultaneously, minimizing the impact of the initial language choice.

Two key factors to consider are the level of mathematics involved and the platform compatibility. Web development generally requires less math, whereas banking applications tend to involve more complex mathematical operations. Additionally, some languages are optimized for specific platforms (e.g., C for *nix systems and C# for Microsoft), although they can still be used on other platforms with some limitations. ECMAScript initially functioned solely in browsers, but today it can also be used for native applications, albeit with certain restrictions imposed by different browser APIs.

In the end, these are just details that exist regardless of the chosen field. Backend development can be done in languages like C++ and Python, or even with Node.js. Game development can be pursued using C# (XNA/Unity/Monogame) or JavaScript (especially for browser-based games utilizing WebGL). Ultimately, it's essential to study what you enjoy and not fixate on starting with the basics or trying to define the "fundamentals of the basics."
  •  


If you like DNray forum, you can support it by - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 and more...