Description
Programming languages are often considered trivial given their ease of availability. Also, since most programmers are used to choosing frameworks, they take programming language selection for granted.
Before getting started, answering “Why do you need to learn a programming language?” is crucial. There is no correct answer. But a specific one. Based on your goals, you need to decide the value of the venture.
Why so few questions?
The course intends to assist you in becoming self-dependent. The seemingly few questions are enough for you to test the waters and get going on your journey to command line mastery.
—————————– SAMPLE —————————-
Q: As someone selecting a language for a project in a software company, would you consider the number of open source projects using the language as a primary factor?
Answer: As mentioned earlier, everyday use cases often take the form of libraries. Therefore, the open-source frameworks and libraries ecosystem is critical for building products quickly without compromising stability. Furthermore, the active OSS projects are a good indicator of a thriving developer community around a language.
For languages like C++ that do not have networking built in, third-party frameworks like seastar, boost, POCO, etc., provide a good fallback. Some organizations are big enough to invest in writing their implementations which they may choose to make open source later. The advantage of open source is constant testing of the framework with various use cases. But the language must be accessible enough for new developers to allow this kind of project ecosystem. Without new developers joining the community continuously, stagnation is imminent. Using a stagnated language in production can soon become a performance bottleneck.
HTTP servers are specific examples of library requirements that became dominant with microservice architecture. Languages like C++ and Python do not have the implicit package HTTP servers in the core language installer packages. So one has to pull the framework using the language package manager. But newer languages like GoLang and Rust or the latest versions of Java have built-in classes in the default language package.
*************************************************************************
Under normal circumstances, one has to memorize such answers, but the course focuses on the process of you getting to the answer and not the answer itself! Of course, you are welcome to suggest additions; remember, you have lifetime access to content. Your suggestion will benefit everyone in the community.
This course takes a deep dive into this language learning process. The set of questions is finite, and the architect must discover the permutation based on the use cases.
For example, a student handed an assignment in Java has no reason to ask any language selection question. A researcher using a framework like Apache Spark has no reason to select a new language other than Scala. But if the research project has data processing and ML backends in python, then the researchers must decide if pySpark is needed. A software engineer working in an IT services company on a maintenance project doesn’t have the luxury of choosing a new language since the product code is already in production. On the other hand, a principal engineer in a product company has all the right reasons to pick a new language for a new service that would be doing something completely different compared to the existing codebase.
Hence language selection is circumstantial. Therefore, the tests focus on a generic decision framework to help you select the suitable language.
The course will guide your curiosity around questions like
Why databases are not written in Javascript?
Why are browsers written in C++?
Why do big-data frameworks use Java?
When to Scala instead of Python?
Why are functional programming languages necessary?
Why C++ is considered a high-performance language?
Why were Rust and GoLang invented?
Should one choose Perl or Python?
Are you an aspiring polyglot?
If yes, let’s get started!
Reviews:
– “Some of the questions are subjective. There is no background of what book or reference material one must take before signing up for this course. I would rate this course for intermediate level programmers/developers who have had about 6-10 years under their belt, because some of them would not have the context of the questions being asked. Regardless, once you review the test answers, there’s enough and adequate detail with lucid explanations provided that will enrich one’s knowledge. So despite the context not being present, the course is worth taking to enhance your knowledge on language selection, test frameworks and other considerations for your software projects.”
– “Amazing course, good feedback with explanations when reviewing questions. I recommend it.”