My experience on JavaScript

17 Jan 2024

The JavaScript Journey

I have enjoyed working with JavaScript much more than my previous experience with C. C employs a distinct approach to object-oriented programming, utilizing structs and functions, and lacks built-in support for classes and prototypes, a feature readily available in JavaScript. The latter’s object-oriented syntax, incorporating prototypes and constructors, proves to be more advantageous for constructing intricate, interactive web applications that involve managing diverse objects and their behaviors. On the other hand, C’s structured programming syntax aligns better with traditional procedural programming and low-level system development. When dealing with object-oriented programs, JavaScript offers more seamless support.

Another noteworthy distinction in JavaScript is its ability to declare variables without specifying data types. In contrast, C is a statically typed language, requiring explicit data type declarations for variables such as int, char, unsigned int, double, etc. JavaScript allows for simpler variable declarations using var, let, or const, presenting a more lenient stance on data types. While this flexibility may pose challenges as coding projects become more complex, particularly as we progress through the course, there are likely disadvantages to such loose coding rules. JavaScript’s dynamic typing proves advantageous when coding demands flexibility, while C’s static typing shines in scenarios where robust type safety is crucial, such as in system-level programming or safety-critical applications, ensuring explicit definition of variable types and preventing potential issues.

Another significant contrast lies in JavaScript’s dynamic arrays, defined using square brackets, suitable for scenarios where the size of the data structure may dynamically change, as commonly encountered in web applications. Conversely, C’s statically sized arrays with specific type declarations excel in situations where memory efficiency and predictability are paramount, such as in embedded systems with limited resources.

Throughout this module, I gained valuable insights into JavaScript syntax, navigating functions and objects, and mastering basic operators for mathematical and boolean operations. While I haven’t delved deeply enough into the language to form a comprehensive opinion, my initial impression is that JavaScript offers remarkable flexibility, albeit with some drawbacks, particularly in relation to loose typing, which I anticipate exploring further as I tackle more complex projects.

Thoughts on Class

Engaging in Athletic Software Engineering has proven to be a beneficial practice. The adage “use it or lose it” holds true, emphasizing the importance of regularly honing skills to prevent them from dulling over time. The practice Workouts of the Day (WODs) are particularly valuable, creating a high-stakes and stressful environment akin to an actual coding interview process. The incorporation of time as a metric adds pressure, offering great preparation for scenarios where time constraints play a crucial role.

While this learning approach is overall effective, it does come with a certain level of stress that may require some adjustment time. Unlike most of my other classes, where assignments are not as frequent, the regular deadlines in this course have me constantly checking Laulima and feeling a bit overwhelmed. Despite the stress, the increased frequency of assignments proves to be beneficial in enhancing accountability. In the grand scheme of things, I recognize that building competence in my field requires consistent effort, and the added accountability serves as a motivating factor.