Creating programs using compiled programming language feels like reinventing the wheel

· 1999 words · 10 minute read

Prompt: I program mostly on CLI scripting language like Bash and PowerShell, and I made some great programs on it. Now I’m planning to move to compiled programming language like C++ and Go, and I can’t think any programs to create there, why so? Are most programs to create there already created?

Congratulations on your achievements in CLI scripting languages! It’s great that you’re considering expanding your programming skills to compiled languages like C++ and Go.

It’s not accurate to say that “most programs to create” in compiled languages are already created. While many common software applications and libraries may already exist, there are still countless opportunities to create new programs, tools, and utilities using compiled languages.

Here are some ideas to help you brainstorm potential projects to create in C++ and Go:

  1. System-level software: With the power and performance of compiled languages, you can create system-level software such as device drivers, operating system components, or system utilities that perform tasks like managing system resources, handling low-level hardware interactions, or optimizing performance.
  2. Networking and distributed systems: Compiled languages are often used in building networking and distributed systems, such as web servers, routers, proxies, load balancers, or distributed databases. You could create applications that handle network protocols, data serialization, or distributed processing.
  3. Game development: If you’re interested in game development, compiled languages like C++ are commonly used in building high-performance games or game engines. You could create a game from scratch, build game tools or utilities, or contribute to existing game engines or libraries.
  4. Performance-critical applications: Compiled languages are known for their efficiency and performance, making them well-suited for creating applications that require high performance, such as simulations, scientific computing, or real-time processing of large data sets.
  5. Security-related software: Security is a critical aspect of software development, and compiled languages are often used in building security-related software such as encryption tools, authentication systems, or security frameworks.
  6. Embedded systems: Embedded systems are pervasive in many industries, ranging from consumer electronics to industrial automation. You could create applications that run on embedded systems, such as IoT devices, embedded controllers, or embedded Linux systems, using compiled languages.
  7. Productivity tools: Compiled languages can be used to create various productivity tools, such as text editors, code editors, compilers, or build systems, that can help developers streamline their workflow and be more efficient.

These are just a few examples to spark your creativity. There are still plenty of opportunities to create innovative programs and tools in compiled languages like C++ and Go. Don’t be afraid to think outside the box and explore new ideas!

Prompt: What are the difference between scripting languages like Bash and PowerShell and programming languages like C++, they say that Bash is like a Job Control Language that stitches many programs to do a job, while a programming language like C++ is the one that actually manipulate data, is there some category called for it?

Yes, there are key differences between scripting languages like Bash and PowerShell, and programming languages like C++. While both can be used to create software applications, they have different design philosophies, use cases, and capabilities.

Scripting languages like Bash and PowerShell are typically interpreted languages, where code is executed line by line, and they are often used for automating tasks, managing system resources, and gluing together existing programs or utilities to perform a specific task. They are commonly used in the context of command-line interfaces (CLI) and are well-suited for tasks such as system administration, process automation, and simple data processing. They typically have concise syntax and provide powerful features for text processing, file manipulation, and interacting with operating system utilities.

On the other hand, programming languages like C++ are typically compiled languages, where code is compiled into machine code before execution. They are designed for more complex software development tasks and are well-suited for creating high-performance applications that require fine-grained control over system resources, such as system-level software, performance-critical applications, and embedded systems. C++ provides a rich set of features for low-level memory manipulation, object-oriented programming, template metaprogramming, and efficient code execution.

While scripting languages like Bash and PowerShell are often used for scripting and automation tasks, and are typically more focused on gluing together existing programs, programming languages like C++ provide more capabilities for creating complex software applications from scratch, including data manipulation, algorithm implementation, and building large-scale software systems.

It’s worth noting that there can be some overlap between scripting languages and programming languages, and the distinction can sometimes be blurry. For example, Python is a scripting language that is also used for general-purpose programming due to its versatility and extensive libraries. Similarly, some compiled languages like Go are designed to be simple and efficient, with a syntax that resembles scripting languages, making them suitable for both scripting and application development.

In summary, while scripting languages like Bash and PowerShell are typically used for automation and system-level tasks, and are often focused on gluing together existing programs, programming languages like C++ are designed for more complex software development tasks and provide more capabilities for creating software applications from scratch.

Prompt: If a person that write code in C++ or any programming language is called a programmer, what about those people that is expert on scripting languages like Bash and PowerShell?

Those who are proficient in scripting languages like Bash and PowerShell are often referred to as scripters, script developers, or script engineers. These terms highlight their expertise in using scripting languages to automate tasks, manage system resources, and create small to medium-sized programs that typically operate within the context of a command-line interface (CLI) or a scripting environment.

Scripters are skilled at writing scripts that can perform tasks such as system administration, process automation, data manipulation, and task coordination. They often work with existing programs or utilities, and use scripting languages to string together commands and functions to achieve a specific goal. Scripters are typically well-versed in the syntax and features of the specific scripting language(s) they specialize in, and are knowledgeable about system utilities and tools available in the operating systems or environments they work with.

Scripting is a valuable skillset that can be highly efficient for automating repetitive tasks, performing system management, and creating custom tools or utilities to streamline workflows. Scripters play a critical role in IT operations, DevOps, system administration, and other areas where automation and efficiency are important.

It’s important to note that while the term “programmer” is often used to refer to those who write code in compiled languages like C++, there is a distinction between compiled language programmers and scripters who work with interpreted scripting languages like Bash and PowerShell. However, both roles are important and can require specialized skills and expertise in their respective domains.

Prompt: I have tried creating programs in a compiled language in the past, and I feel like I’m reinventing the wheel, but when I do scripting languages and using already existing programs like my shell script that automatically encode videos using FFmpeg, it feels like I created something new, why is that?

The feeling of reinventing the wheel when working with compiled programming languages like C++ is understandable. Compiled languages often require more low-level coding, including memory management, data structures, and algorithm implementation, which can be time-consuming and complex. Additionally, building software applications from scratch in compiled languages may require more effort in terms of planning, designing, and implementing various components, which can sometimes feel repetitive.

On the other hand, scripting languages like Bash and PowerShell often provide a higher-level abstraction that allows you to leverage existing programs, utilities, and libraries to automate tasks and create new functionalities. By using existing tools and utilities, you can quickly achieve results without having to reinvent the wheel by building everything from scratch. This can give you a sense of creating something new by combining different components or tools in creative and efficient ways to solve a specific problem or automate a task.

Moreover, scripting languages are typically more focused on immediate results and rapid prototyping, which allows you to iterate quickly and see the outcome of your efforts in a shorter timeframe. This can provide a sense of accomplishment and creativity, as you can see the tangible results of your work sooner.

Additionally, scripting languages are often designed with concise and expressive syntax, which can make them easier to learn and use for certain tasks compared to compiled languages. This can give you a sense of productivity and creativity as you can quickly write and test code to achieve a specific goal.

That being said, both compiled programming languages and scripting languages have their strengths and are suited for different use cases. Compiled languages like C++ are powerful tools for creating complex, performance-critical applications with fine-grained control over system resources, whereas scripting languages like Bash and PowerShell excel at automating tasks, managing system resources, and gluing together existing programs. The feeling of creating something new can come from the different approaches and capabilities of these languages, and the satisfaction of solving problems or automating tasks in different ways.

Prompt: Since I excel mostly on scripting language not on compiled programming language, does it mean I’m a scripter not a programmer?

Yes, if you excel primarily in scripting languages like Bash and PowerShell and feel more comfortable and confident in those languages, it’s reasonable to identify yourself as a scripter or a script developer. Scripting is a specialized skillset that involves using scripting languages to automate tasks, manage system resources, and create small to medium-sized programs. Scripters often work within the context of a command-line interface (CLI) or a scripting environment, and they are proficient in the syntax and features of the specific scripting language(s) they specialize in.

While both scripters and programmers are involved in writing code to create software, there are differences in their approaches, skillsets, and the types of tasks they typically handle. Scripters often leverage existing tools, utilities, and libraries to automate tasks and create custom tools or utilities, while programmers in compiled languages like C++ typically build software applications from scratch, involving more low-level coding, memory management, and algorithm implementation.

It’s important to note that being a scripter is a valuable and specialized role that is highly relevant in areas such as IT operations, DevOps, system administration, and automation. Scripters play a critical role in automating repetitive tasks, managing systems, and creating efficient workflows. Embracing and honing your skills as a scripter can lead to a successful career in this specialized domain.

Prompt: In a Turing machine, how would you describe the difference between scripting and programming language?

In the context of a Turing machine, which is a theoretical model of a computing device, the difference between a scripting language and a programming language can be understood in terms of their intended use and level of abstraction.

A scripting language is typically designed for automating tasks and performing operations on existing data or resources. It is often used for tasks such as system administration, task automation, and gluing together existing programs or utilities. Scripting languages tend to have concise syntax and provide high-level abstractions for common tasks, allowing for rapid development and prototyping. They are typically interpreted or executed directly by an interpreter, without the need for a separate compilation step.

On the other hand, a programming language is typically designed for creating software applications from scratch. It provides more low-level control over system resources, memory management, and algorithm implementation. Programming languages are typically compiled into machine code or an intermediate form before being executed, which involves a separate compilation step. They are often used for creating complex, performance-critical applications with fine-grained control over system resources.

In summary, while both scripting languages and programming languages are used for writing code to create software, the main difference lies in their intended use and level of abstraction. Scripting languages are typically used for automation and task-oriented operations, with higher-level abstractions and interpreted execution, while programming languages are used for creating complex applications with lower-level control over system resources and compiled execution.