CT-5-S1-118.pdf
Document Details
Uploaded by Deleted User
Tags
Full Transcript
Current Trends in Programming Technologies CT5 Table of contents 01 02 Overview of the course Modern Programming Languages Historical perspective...
Current Trends in Programming Technologies CT5 Table of contents 01 02 Overview of the course Modern Programming Languages Historical perspective of programming New and emerging programming languages (e.g., Rust, technologies Go, Julia) Current state of the software development Language features and paradigms (e.g., functional industry programming, concurrency) Comparison of modern languages with traditional ones 03 04 Frameworks and Libraries Internet of Things: An Introduction, Application and Challenges Popular frameworks for web development (e.g., React, Programming for IoT devices Angular, Vue.js) Popular IoT frameworks and platforms (e.g., Arduino, Backend frameworks and libraries (e.g., Node.js, Django, Raspberry Pi) Spring) Trends and future directions in IoT development Evaluating the right framework for a project Table of contents 01 02 Overview of the course Modern Programming Languages Historical perspective of programming New and emerging programming languages (e.g., Rust, technologies Go, Julia) Current state of the software development Language features and paradigms (e.g., functional industry programming, concurrency) Comparison of modern languages with traditional ones 03 04 Frameworks and Libraries Internet of Things: An Introduction, Application and Challenges Popular frameworks for web development (e.g., React, Programming for IoT devices Angular, Vue.js) Popular IoT frameworks and platforms (e.g., Arduino, Backend frameworks and libraries (e.g., Node.js, Django, Raspberry Pi) Spring) Trends and future directions in IoT development Evaluating the right framework for a project Table of contents 05 06 Cloud Computing and DevOps Big Data Evolution of Cloud Computing What is Big Data? Client–server model How is Big Data possible? DevOps practices and tools (e.g., Docker, Kubernetes, Categories of Big Data CI/CD pipelines) Where does Big Data come from? Cloud-native development (e.g., serverless The V’s of Big Data architectures, microservices) 07 08 Analytics: Making Sense of Introduction to Search Engine Data Optimization What is Analytics? What is a Search Engine? Why is analytics important? How does a search engine work? Types of Analytics What is SEO? Business Analytics How does the ranking system work? Table of contents 09 10 Basic SEO Practices Social Media for Business Page Title Social Media Basics Heading Tags How do social media sites make money? Description Meta Tag Social Media Marketing Website URL The SMART Criteria Site Navigation Creating an Ideal Customer Profile Content 11 12 Machine Learning Artificial intelligence Mobile and Cross-Platform Development Machine Learning Deep Learning Trends in mobile app development (e.g., Flutter, React Programming languages and frameworks for AI/ML (e.g., Native) TensorFlow, PyTorch) Cross-platform development tools Trends in AI/ML development (e.g., AutoML, reinforcement Future of mobile development learning) Ethical considerations and challenges in AI/ML Table of contents 13 14 Cybersecurity in Modern Digital Currency Programming What is Digital Currency? Security best practices for software development Bitcoin Trends in cybersecurity technologies and tools Blockchain Case studies of recent security breaches and lessons Mining learned Programming languages and frameworks for blockchain development (e.g., Solidity) Use cases and trends in decentralized applications 15 Up and Coming Technologies Virtual Reality Augmented Reality 3d Printing The Sharing Economy Trends in augmented reality (AR) and virtual reality (VR) Quantum computing and its impact on programming MODULE 1 01 Overview of the course Introduction Welcome to the course on Current Trends in Programming Technologies! In this course, we will explore the Programming technologies are latest advancements and practices rapidly evolving, driven by the in the programming world, equipping increasing complexity of software you with the knowledge and skills to systems, the demand for more stay ahead in the ever-evolving tech efficient and scalable applications, industry. and the integration of emerging technologies like AI, cloud computing, and edge computing. “We need technology in every classroom and in every student and teacher’s hand, because it is the pen and paper of our time, and it is the lens through which we experience much of our world.” —David Warlick Course Objectives 01 Understand and identify the current trends in programming languages, 04 Evaluate the benefits and challenges of adopting new programming frameworks, and related technologies, technologies. and explain their basic workings. 05 Gain hands-on experience with cutting- 02 Define key concepts such as Internet edge tools and frameworks. of Things, Big Data, and Analytics. 03 Analyze the impact of new technologies on software development. 1.1 Programming Languages Evolution Rust and Go(Golang): Rust continues to gain popularity for system-level programming due to its memory safety features. Go is favored for cloud-native applications because of its simplicity and concurrency features. Python Dominance: Python remains the go-to language for AI/ML, data science, and scripting, thanks to its extensive libraries and community support. WebAssembly: WebAssembly (Wasm) is becoming an important technology for web development, allowing high- performance applications to run in the browser. JavaScript/TypeScript Versatility: JavaScript continues to be essential for web development, with TypeScript growing in popularity for adding static typing and enhancing code quality. Kotlin Java Alternative: Kotlin is widely adopted for Android development and increasingly for server-side applications, offering modern features while being fully interoperable with Java. Swift Apple Ecosystem: Key for iOS/macOS development with its performance and modern syntax. Dart Cross-Platform Development: Dart, especially with the Flutter framework, is becoming popular for cross- platform mobile app development due to its expressive syntax and performance. Julia Scientific Computing: Ideal for scientific computing and data science, combining C-like speed with Python- like ease. Frameworks and Libraries 1. Web Development Frameworks React and Next.js: React continues to dominate front-end development with its component-based architecture, while Next.js is becoming the go-to framework for building server-side rendered (SSR) React applications, with support for static site generation (SSG) and API routes. Vue.js and Nuxt.js: Vue.js remains popular for its simplicity and flexibility, with Nuxt.js providing a framework for server-side rendering and static site generation, similar to Next.js but for Vue. Angular: Angular is still a key player for enterprise- level applications, offering a comprehensive framework with built-in solutions for routing, state management, and form handling. 2. Back end Frameworks Express.js Django Popular for Node.js due to its Django is robust for complex flexibility and minimalism. sites; Flask is lightweight for simpler applications. Spring Boot Favored by Java developers for simplifying microservice development. 3. Machine Learning and Data Science Libraries TensorFlow and Scikit-learn PyTorch A staple for traditional Leading frameworks for machine learning tasks, deep learning, with offering efficient tools for TensorFlow used in data analysis. production and PyTorch in research. Pandas Python library used for working with data sets. It has functions for analyzing, cleaning, exploring, and manipulating data 4. Mobile Development Frameworks Ionic Flutter React Native Ionic Gaining popularity for cross- Widely used for building An open-source framework for building platform mobile development mobile applications with cross-platform mobile apps using HTML, with its expressive UI React, balancing CSS, and JavaScript, with built-in UI components and performance and components and tools for Android, iOS, performance. development speed. and Windows development. 5. DevOps and CI/CD Tools 01 Docker remains standard for containerization, while Kubernetes is essential for managing containers at scale. 02 Essential tools for automating CI/CD pipelines, with Jenkins known for its flexibility and GitLab CI for seamless GitLab integration 03 The leading Infrastructure as Code (IaC) tool, allowing developers to define and manage infrastructure declaratively. 6. Front-End Libraries and Tools Tailwind CSS Bootstrap A utility-first CSS framework Continues to be widely used for that’s popular for its flexibility quickly developing responsive, in building custom designs. mobile-first websites. Svelte A compiler-based framework gaining traction for its fast runtime performance. 7. Testing Frameworks Jest The preferred testing framework for JavaScript and React applications, known for its simplicity and feature set. Cypress Popular for end-to-end testing in modern web applications, offering a developer-friendly experience. JUnit The go-to framework for unit testing in Java applications, widely used in enterprise environments. 8. Database Libraries and ORMs Prisma TypeORM SQLAlchemy A type-safe ORM for Widely used in The go-to ORM in the Node.js, offering TypeScript projects for Python ecosystem, intuitive database its rich database known for its flexibility access and support for management features. and powerful query various databases. capabilities. 1.2 The Internet of Things Expanding IoT Ecosystem Edge Computing Enhanced Security and Integration Privacy Connected Devices Growth Reduced Latency Focus on Security The number of IoT devices Edge computing is As IoT devices proliferate, continues to grow rapidly, increasingly integrated security concerns are connecting everything from with IoT to process data paramount. Improved household appliances to closer to the source, encryption, authentication industrial machines, with a reducing latency and methods, and privacy-by- focus on smart homes, smart improving real-time design principles are cities, and industrial IoT. decision-making, crucial being implemented to for applications like protect data and prevent autonomous vehicles and breaches. healthcare. AI and Machine Learning Interoperability and in IoT Standardization Intelligent Automation Unified Protocols AI and ML are being Efforts are underway to embedded in IoT devices to improve interoperability enable predictive between different IoT maintenance, anomaly devices and platforms detection, and automated through standardized decision-making, making protocols, which are critical IoT systems smarter and for seamless more efficient. communication and integration. 1.3 Cloud Computing and DevOps Multi-Cloud and Hybrid Cloud Strategies Diversified Cloud Usage Organizations are increasingly adopting multi-cloud and hybrid cloud strategies, leveraging services from multiple cloud providers (like AWS, Azure, and Google Cloud) to optimize performance, reduce costs, and enhance resilience. Seamless Integration Tools and platforms are evolving to facilitate easier management and integration of workloads across different cloud environments. Serverless Computing Focus on Flexibility Serverless computing, using services like AWS Lambda, Google Cloud Functions, and Azure Functions, is growing as developers prioritize reducing infrastructure management, allowing for faster deployment and scaling. Cloud-Native Development Microservices and Containers: Cloud-native development continues to rise, with microservices architectures and containerization (using tools like Docker and Kubernetes) at the core, enabling scalable, resilient, and easily deployable applications. DevOps and CI/CD Maturity Automation and Continuous Delivery: DevOps practices are becoming more mature, with continuous integration and continuous deployment (CI/CD) pipelines becoming standard in software development, facilitated by tools like Jenkins, GitLab CI, and CircleCI. Infrastructure as Code (IaC): IaC tools like Terraform and Ansible are critical for automating infrastructure provisioning, ensuring consistency, and enhancing collaboration between development and operations teams. Security and Compliance Shift-Left Security: Security is being integrated earlier in the development cycle, with automated security testing and DevSecOps practices ensuring that applications are secure by design. Compliance Automation: Cloud platforms and DevOps tools are increasingly offering features to automate compliance checks and ensure that applications meet regulatory requirements. 1.4 Big Data Big Data refers to the vast volumes of data generated every second from various sources like social media, sensors, transactions, and more. The key characteristics of Big Data are often summarized by the “Three Vs”: Volume: The sheer amount of data. Velocity: The speed at which data is generated and processed. Variety: The different types and formats of data. Big Data technologies and tools, such as Hadoop and Spark, are designed to store, manage, and analyze these large datasets. The goal is to uncover insights that can drive business decisions and innovations. 1.5 Analytics: Making Sense of Data Analytics involves examining data to draw meaningful conclusions and make informed decisions. This process typically includes: Data Collection: Gathering relevant data from various sources. Data Processing: Cleaning and transforming data for analysis. Data Analysis: Applying statistical methods, algorithms, or machine learning to identify patterns and trends. Visualization: Presenting data findings in charts, graphs, or dashboards for easy interpretation. Analytics can be descriptive (what happened), diagnostic (why it happened), predictive (what is likely to happen), or prescriptive (what actions should be taken). 1.6 Search Engine Optimization (SEO) SEO is the practice of optimizing a website to improve its visibility and ranking on search engine results pages (SERPs). The primary goal of SEO is to increase organic (non-paid) traffic to a website. Key aspects of SEO include: Keyword Research: Identifying and targeting relevant keywords that potential visitors use in searches. On-Page SEO: Optimizing individual pages with relevant keywords, meta tags, headings, and quality content. Off-Page SEO: Building external links and improving the site's reputation through activities like link-building and social media engagement. Technical SEO: Ensuring the website’s infrastructure is optimized for search engines, including site speed, mobile- friendliness, and crawlability. 1.6 Search Engine Optimization (SEO) Basic SEO Practices include: Keyword Optimization: Use relevant keywords naturally in titles, headers, and content. Quality Content: Create valuable, informative, and engaging content that addresses users’ needs and queries. Meta Tags: Write compelling and relevant meta titles and descriptions for each page. Internal Linking: Link to other pages within your site to improve navigation and distribute page authority. Mobile Optimization: Ensure your website is responsive and works well on mobile devices. Page Load Speed: Optimize images, use caching, and streamline code to improve loading times. User Experience (UX): Design your website for easy navigation and a positive user experience. 1.7 Social Media for Business Strategy Content Community Development Creation Engagement Aligning plans with Crafting engaging Interacting with business goals and posts, images, and followers through target audience. videos. comments and messages. Advertising Analytics and Monitoring Using paid ads to Tracking metrics to expand reach and evaluate and refine drive actions strategies Artificial Intelligence and Machine Learning Integration Increased Adoption AI and ML are bieng integrated into various software applications. Developers are leveraging frameworks like TensorFlow, PyTorch, and scikit-learn to build intelligent systems. AutoML Tools Tools like Google AutoML and H2O.ai are simplifying the process, enabling developers without deep ML expertise to implement machine learning models. 1.8 Machine Learning It is a subset of artificial intelligence (AI) that focuses on developing algorithms that enable computers to learn from and make predictions or decisions based on data. Key components include: Unsupervised Supervised Learning Learning Predicting outcomes Finding patterns in from labeled data. unlabeled data Reinforcement Learning Neural Networks Making decisions Modeling complex data based on rewards relationships, including and penalties. deep learning for tasks like image and speech recognition. 1.9 Mobile and Cross-Platform Development Mobile and Cross-Platform Development involves creating applications that run on mobile devices. Native Cross-Platform User Interface Development Development (UI) and User Experience (UX) Building apps for specific Using frameworks like Designing intuitive and platforms (e.g., iOS using React Native, Flutter, or responsive interfaces that Swift, Android using Kotlin) Xamarin to create apps provide a seamless to leverage platform- that run on multiple experience across different specific features. platforms from a single devices. codebase, reducing development time and cost. 2.0 Cybersecurity in Modern Programming Cybersecurity in Modern Programming focuses on protecting software and systems from threats and vulnerabilities. ✓ Secure Coding: Writing code that prevents common vulnerabilities like SQL injection, cross-site scripting (XSS), and buffer overflows. ✓ Authentication and Authorization: Implementing strong user authentication methods (e.g., multi-factor authentication) and managing user permissions securely. ✓ Data Encryption: Protecting data at rest and in transit using encryption algorithms to prevent unauthorized access. ✓ Regular Updates and Patching: Keeping software and dependencies up-to- date to mitigate known vulnerabilities. 2.1 Digital Currency Digital Currency refers to money that exists in electronic form and can be used for transactions. 1. Cryptocurrencies Decentralized digital currencies like Bitcoin and Ethereum that use blockchain technology for secure and transparent transactions. 2. Central Bank Digital Currencies (CBDCs) Government-issued digital currencies that represent fiat money and are regulated by central banks. 3. Stablecoins Cryptocurrencies pegged to a stable asset, like a fiat currency, to reduce volatility. 2. Up-and-Coming Technologies Up-and-Coming Technologies are emerging innovations that are expected to impact various fields. ❑ Quantum Computing Advanced computing technology that leverages quantum bits (qubits) to solve complex problems much faster than classical computers. ❑ 5G Technology The next generation of mobile networks offering faster speeds, lower latency, and greater connectivity. ❑ Augmented Reality (AR) and Virtual Reality (VR) Technologies that enhance or simulate user experiences through immersive digital environments. ❑ Edge Computing Processing data closer to the source (e.g., IoT devices) to reduce latency and improve real-time data analysis. ❑ Bioengineering and Biotechnology Innovations in genetic engineering, CRISPR technology, and personalized medicine that offer new possibilities for healthcare. Historical Perspective of Programming Technologies Programming technologies have undergone a remarkable evolution since the early days of computing. Understanding this history provides valuable context for the trends and tools that dominate the field today. Here’s a brief overview of the major phases and milestones in the development of programming technologies: 1. The Era of Early Computing (1940s–1950s) ❑ Machine Code and Assembly Language Machine Language (low level language) Low-Level language is the only language which can be understood by the computer. Low-level language is also known as Machine Language. The machine language contains only two symbols 1 & 0. All the instructions of machine language are written in the form of binary numbers 1's & 0's. A computer can directly understand the machine language. Assembly Language (middle level language) A middle-level language uses symbols like letters, digits, and special characters to create instructions. Assembly language is an example, where mnemonics replace binary code instructions from low-level language. Since computers cannot understand mnemonics, an assembler is used to translate them into machine code, making it understandable for the computer. Since computers cannot understand mnemonics, an assembler is used to translate them into machine code, making it understandable for the computer. High level Language A high-level language is user-friendly, First High-Level Languages: The late 1950s resembling human languages with rules saw the development of the first high-level for creating instructions. Every high-level programming languages, which were language has a set of predefined words more abstract and easier to use. Notable known as Keywords and a set of rules examples include: known as Syntax to create instructions. FORTRAN (1957): Developed by IBM for Examples include FORTRAN, C, C++, Java, scientific and engineering calculations. and Python. While easy for users to COBOL (1959): Designed for business data understand, computers cannot process processing, emphasizing readability and them directly, so a compiler or maintainability. interpreter is used to convert them into low-level language for computer execution. 2.The Rise of Structured Programming (1960s–1970s) ❑ Emergence of Structured Programming As software complexity grew, the need for more disciplined programming approaches became evident. Structured programming emphasized clear, logical control structures (e.g., loops, conditionals) over the unstructured "goto" statements that were common in earlier code. ALGOL (1960): Pioneered structured programming concepts and introduced block structure and scope. C (1972): Developed by Dennis Ritchie at Bell Labs, C combined low-level hardware control with high-level programming constructs. It became the foundation for many subsequent languages and operating systems, including Unix. ❑ Modularity and Reusability Languages like Pascal (1970) promoted the use of modular programming, allowing code to be organized into procedures and functions that could be reused across different programs. 3. The Object-Oriented Paradigm (1980s–1990s) ❑ Object-Oriented Programming (OOP) In response to the increasing complexity of software, OOP introduced the concept of encapsulating data and behavior into "objects," promoting modularity and reusability. Smalltalk (1972): One of the first OOP languages, it influenced the development of later languages by introducing the concept of objects, classes, and message passing. C++ (1985): An extension of C, C++ added OOP features while retaining the efficiency and flexibility of C, making it popular for system and application development. Java (1995): Designed for portability and security, Java became a cornerstone of web and enterprise development with its "write once, run anywhere" philosophy and extensive standard library. 4. The Internet and Open Source Revolution (1990s–2000s) ❑ Web Development The rise of the internet transformed programming, leading to the development of languages and technologies tailored for web applications. HTML, CSS, JavaScript PHP, Ruby, Python These core web technologies enabled the Scripting languages like PHP, Ruby creation of interactive websites and applications. (with Ruby on Rails), and Python JavaScript, in particular, became essential for gained popularity for web client-side scripting and has since evolved into a development due to their simplicity powerful, full-stack language. and rapid development capabilities. ❑ Open Source Movement The open-source movement, exemplified by the Linux operating system and the Apache web server, fostered a culture of collaboration and innovation. This led to the widespread adoption of open-source languages, libraries, and frameworks, significantly accelerating software development. 5. The Agile and DevOps Era (2000s–2010s) Proliferation of Agile Methodologies DevOps The Agile Manifesto (2001) The integration of development Frameworks formalized a set of principles and operations practices, The 2000s and 2010s saw the that emphasized iterative known as DevOps, emerged as proliferation of frameworks development, customer a response to the need for and libraries across different collaboration, and faster, more reliable software languages, simplifying the responsiveness to change. This delivery. Automation tools like development process. approach fundamentally Jenkins, Docker, and Frameworks like Django changed how software was Kubernetes became critical in (Python), Spring (Java), and developed, moving away from CI/CD (Continuous.NET (C#) standardized rigid, linear models like Integration/Continuous many common tasks, Waterfall. Deployment) pipelines, reducing the time required enabling frequent, reliable to build complex releases. applications. 6. The Age of AI, Cloud, and Mobile Computing (2010s–Present) Cloud Computing Mobile App Development Artificial Intelligence and Data Science The advent of cloud With the proliferation of computing, led by providers smartphones, mobile app The 2010s witnessed an like AWS, Microsoft Azure, and development became a explosion of interest in AI and Google Cloud, revolutionized dominant area of focus. data science, driven by how software was deployed Platforms like Android and advances in machine learning, and scaled. Developers could iOS, along with cross- neural networks, and big data. now build and deploy platform frameworks like Languages like Python became applications without worrying React Native and Flutter, central to this field due to their about the underlying allowed developers to build extensive libraries (e.g., infrastructure, enabling rapid powerful, responsive TensorFlow, PyTorch, Scikit- scaling and global reach. applications for millions of learn) and ease of use. users. 7. The Future: Quantum Computing, Edge Computing, and Beyond ❑ Quantum Computing As we look to the future, quantum computing holds the promise of solving problems that are currently intractable with classical computers. Early programming languages and frameworks for quantum computing, like Qiskit and Cirq, are already being developed, laying the groundwork for this new paradigm. ❑ Edge Computing With the rise of IoT devices, edge computing is becoming increasingly important. This approach brings computation closer to the data source, reducing latency and enabling real-time processing in applications like autonomous vehicles and smart cities. Conclusion From the rudimentary days of machine code to the complex, distributed systems of today, programming technologies have continually evolved to meet the needs of developers and the challenges of the computing environment. Each phase of this evolution has built upon the innovations of the past, leading to a rich ecosystem of languages, tools, and methodologies that define modern software development. As technology continues to advance, understanding this history provides a foundation for navigating the future of programming. Current state of the software development industry The Custom Software Development Global Market Report 2024 provides comprehensive insights on the custom software development market size, trends and drivers, opportunities, strategies, and competitor analysis. The countries covered in the custom software development market report are Australia, Brazil, China, France, Germany, India, Indonesia, Japan, Russia, South Korea, the UK, and the USA, and the major seven regions are Asia- Pacific, Western Europe, Eastern Europe, North America, South America, the Middle East, and Africa. May 17, 2024 by The Business Research Company The software development industry in 2024 is experiencing rapid growth and significant changes, driven by emerging technologies, evolving business needs, and societal shifts. ❑ Key Trends and Challenges Artificial Intelligence (AI) and Machine Learning (ML) AI and ML are now integral to software development, with applications ranging from virtual assistants to predictive analytics. The industry is seeing a shift towards MLOps (Machine Learning Operations), which focuses on efficiently managing the lifecycle of AI/ML models, ensuring they are scalable and reliable in real-world applications Cloud and Edge Computing While cloud computing remains dominant, edge computing is gaining traction, particularly in scenarios requiring real-time data processing with low latency. This is crucial in industries like healthcare and transportation, where uninterrupted data access is essential. 5G and IoT The adoption of 5G technology is accelerating, enabling faster and more reliable connections for IoT devices. This enhances the ability to deploy complex applications, such as augmented reality (AR) and machine learning, on mobile platforms Cybersecurity: With the increasing prevalence of cyber threats, there is a heightened focus on incorporating robust security measures into software from the start. This trend is part of the broader adoption of DevSecOps, which integrates security practices into the DevOps process No-Code/Low-Code Development The demand for software development is leading to the growth of no-code and low-code platforms, enabling businesses to create applications without extensive coding knowledge. This trend democratizes software development, allowing more people to contribute to digital transformation efforts. Remote Work: Despite some companies pushing for a return to the office, a significant portion of software developers continue to work remotely. This shift has led to debates over productivity, with many developers reporting higher efficiency when working from home MODULE 2 Modern Programming Languages What is a Programming Language? A programming language is a set of instructions, written in a specific syntax, which tell a computer what tasks to perform and how to perform them. By mastering a programming language, you can create software applications, websites, and other digital tools that shape our world. Major Types of Programming Languages 1. Procedural Programming Languages - focus on procedures or functions that perform specific tasks. Code is organized into reusable blocks. Examples: C, Pascal, FORTRAN. Use Cases: Engineering, gaming, finance. Characteristics: Emphasizes systematic execution and code reuse. Less flexible but fundamental in computer science education. 2. Functional Programming Language - uses functions to model computations and data transformation. Functions operate on input arguments and produce outputs without side effects. Examples: Haskell, Clojure, Lisp, Scala. Characteristics: Supports parallel programming and avoids mutable state, making it more efficient and reliable. 3. Object-Oriented Programming Languages - organizes data and behavior into objects, enabling complex system creation through encapsulation and inheritance. Examples: Java, Python, C++, Ruby. Characteristics: Hides implementation details and allows customization through inheritance, facilitating large-scale system development. 4. Scripting Languages - interpreted rather than compiled, with easy syntax and dynamic typing. Used for automating tasks and integrating with other languages. Examples: Python: Easy to learn, suitable for rapid development. Perl: Dynamic, used for text manipulation on high-traffic websites. Bash: Default shell for Linux/GNU, used for scripting and documentation. Characteristics: Simplifies scripting tasks and integration. 5. Logic Programming Languages - Based on formal logic, using logical statements or rules to define relationships and derive new information. Example: Prolog. Characteristics: Concise and expressive, suitable for AI and expert systems where reasoning is required. 6. Imperative Programming Languages - provides a set of instructions for the computer to manipulate the state of the program. Examples: C, C++, Java, Python. Characteristics: Describes the steps to solve a problem, commonly used for system programming and tasks requiring direct hardware control. 7. Declarative Programming Languages - focuses on what the program should accomplish rather than how to achieve it. Examples: SQL (for database queries), HTML (for web structure). Use Cases: Data queries, web development, configuration. Characteristics: Emphasizes describing desired results. Often used alongside other paradigms. List of Modern Programming Languages Python TypeScript Kotlin Scala JavaScript C++ Swift Julia Java Go(Golang) Ruby R C# Rust Dart PHP Zig Crystal Grain Red V F# Nim Hare Elm Ballerina 01 PYTHON A popular programming language created by Guido van Rossum and released in 1991. USES: ❑ Web development (server-side) Example: Creating a blog where users can post and comment on articles. ❑ Software development A desktop application for managing personal finances. ❑ Mathematics Analyzing large datasets to generate statistical reports. ❑ System scripting Writing a script to automate file backups or system monitoring. What can Python do? ❑ Create web applications on a server ❑ Build workflows alongside other software ❑ Connect to databases and read/modify files ❑ Handle big data and perform complex mathematics ❑ Rapid prototyping and production-ready software development Why Python? ❑ Works on multiple platforms (Windows, Mac, Linux, Raspberry Pi) ❑ Simple syntax similar to English ❑ Allows writing programs with fewer lines ❑ Uses an interpreter system for quick prototyping ❑ Supports procedural, object-oriented, and functional programming styles Good to know: The most recent major version is Python 3; Python 2 is still used but only receives security updates. Python can be written in text editors or Integrated Development Environments (IDEs) like Thonny, PyCharm, NetBeans, or Eclipse. Python Syntax compared to other languages: Designed for readability with English-like syntax and mathematical influences Uses new lines to complete commands instead of semicolons or parentheses Relies on indentation (whitespace) to define scope, unlike languages that use curly brackets Questions: 1. What is a correct syntax to exit the Python command line interface? a) exit() b) stop() c) end() 2. What is the correct file extension for Python files? a).pp b).pt c).py Java 02 Script A high-level programming language created by Brendan Eich in 1995 for adding interactivity to websites. USES: Web development (interactive elements, animations) Example: Creating interactive forms with real-time validation and animations for user interface elements. Server-side development (Node.js) Example: Developing a RESTful API to handle user authentication and data retrieval for a web application. Mobile app development (React Native) Example: Building a mobile app for tracking fitness activities that runs on both iOS and Android. Desktop apps (Electron) Example: Creating a desktop application for managing notes that works on Windows, macOS, and Linux. Game development Example: Building a simple game like a puzzle or platformer that runs directly in the browser. What can JavaScript do? ❑ Modify HTML/CSS ❑ Handle user events ❑ Communicate with servers (AJAX) ❑ Build interactive web applications Why JavaScript? ❑ Runs in browsers ❑ Versatile (client-side & server-side) ❑ Supported by modern frameworks (e.g., React, Angular) ❑ Easy to learn Why Study JavaScript? JavaScript is one of the 3 languages all web developers must learn: 1. HTML to define the content of web pages 2. CSS to specify the layout of web pages 3. JavaScript to program the behavior of web pages Good to Know: ❑ Old ECMAScript versions was named by numbers: ES5 and ES6. From 2016, versions are named by year: ES2016, 2018, 2020… The 15th edition, ECMAScript 2024, is published in July 2024. ❑ Uses curly brackets and semicolons ❑ Executes in browsers or server-side with Node.js 03 A widely-used, object-oriented programming Java language developed by Sun Microsystems (now Oracle) and released in 1995. USES: Web applications (server-side with Java EE) Example: Developing an online shopping platform with user accounts and payment processing. Mobile apps (Android development) Example: Building a weather app that provides real-time weather updates and forecasts. Desktop applications Example: Creating a graphical user interface (GUI) application for managing tasks and schedules. USES: Enterprise software Example: Developing an enterprise resource planning (ERP) system for managing company resources and workflows. Embedded systems Example: Developing software for smart home devices like thermostats or security cameras. What can Java do? ❑ Create cross-platform applications (write once, run anywhere) ❑ Build server-side applications with robust frameworks (e.g., Spring) ❑ Develop Android apps ❑ Implement large-scale enterprise systems Why Java? ❑ Platform-independent (JVM) ❑ Strongly typed with strict syntax ❑ Extensive libraries and frameworks ❑ Large developer community Good to Know: ❑ Latest versions: Java 23 (released March 2024), Java 21 (LTS-Long Term Support) ❑ Uses curly brackets {} and semicolons ; ❑ Runs on the Java Virtual Machine (JVM) ❑ Java 23 includes enhancements like Virtual Threads and Pattern Matching 04 A modern, object-oriented programming C# language developed by Microsoft and released in 2000. USES: Windows applications (desktop and UWP) Example: Developing a desktop app for file management or a Universal Windows Platform (UWP) app for note-taking. Web development (ASP.NET) Example: Creating an e-commerce site with user authentication and product management. Game development (Unity) Example: Developing a 2D or 3D game with Unity for various platforms, including PC and consoles. Mobile apps (Xamarin) Example: Creating a fitness tracking app that runs on both iOS and Android devices. Enterprise applications Example: Developing a customer relationship management (CRM) system for managing client interactions and sales processes. What can C# do? ❑ Build Windows desktop and web applications ❑ Develop games with Unity ❑ Create cross-platform apps with.NET Core ❑ Implement enterprise solutions Why C#? ❑ Integrated with Microsoft technologies (.NET framework) ❑ Rich standard library ❑ Supports modern programming paradigms (LINQ, async/await) ❑ Strong type safety and memory management Good to Know: ❑ Latest versions: C# 12 (released November 2023) ❑ Uses curly brackets {} and semicolons ; ❑ Runs on.NET 8 and.NET Core ❑ Primary Constructors simplify class definitions ❑ Collection Expressions for easier manipulation of collections ❑ Continues to support LINQ and Async/Await for modern programming tasks Type 05 A statically-typed superset of JavaScript Script developed by Microsoft, adding optional type annotations and other features to JavaScript. USES: Large-scale web applications Example: Developing a complex dashboard with data visualization and interactive components. Front-end frameworks (e.g., Angular) Example: Creating a single-page application (SPA) with Angular for managing user accounts and content. Server-side development (with Node.js) Example: Developing a RESTful API for handling user requests and interacting with a database. Enhancing JavaScript codebases with type safety Example: Refactoring a JavaScript project to TypeScript to catch type errors early and improve code quality. What can TypeScript do? ❑ Add static types to JavaScript for better error checking ❑ Support modern JavaScript features (ES6+) ❑ Integrate with build tools and IDEs for improved development experience Why TypeScript? ❑ Provides static type checking ❑ Improves code quality and maintainability ❑ Enhanced tooling and auto-completion ❑ Transpiles to standard JavaScript for compatibility Good to Know: ❑ Latest versions: TypeScript 5.x that was released March 2024 ❑ Uses similar syntax to JavaScript, with additional type annotations ❑ Requires a build step to convert TypeScript code to JavaScript ❑ Improved performance and type system enhancements in TypeScript 5.x ❑ Supports ECMAScript features like modules, classes, and async/await 06 A general-purpose, object-oriented C++ programming language developed by Bjarne Stroustrup and first released in 1985. USES: System/software development Example: Developing an operating system kernel or a database management system. Game development Example: Designing a 3D action game with advanced graphics and real-time physics. High-performance applications (e.g., real-time simulations) Example: Implementing real-time simulations for aerospace or automotive industries. Embedded systems Example: Developing firmware for microcontrollers in IoT devices or consumer electronics. What can C++ do? ❑ Develop high-performance and resource-efficient software ❑ Build complex system-level applications ❑ Create games and real-time simulations Why C++? ❑ High performance and low-level memory control ❑ Supports multiple programming paradigms (procedural, object-oriented, generic) ❑ Widely used in industry and legacy systems Good to Know: ❑ Latest versions: C++20 and C++23 ❑ Uses curly brackets {} and semicolons ; ❑ Offers an extensive standard library and powerful features like templates and operator overloading ❑ C++23 includes improvements to constexpr functions, ranges, and introduces deducing this ❑ Supports both object-oriented and generic programming 07 A statically-typed, compiled language created Go(Golang) by Google and released in 2009, designed for simplicity and performance. USES: Cloud services and microservices Example: Building scalable microservices platforms like Docker for containerization or Kubernetes for orchestrating containerized applications. Server-side applications Example: Developing high-performance web servers, such as Traefik, a modern HTTP reverse proxy and load balancer built with Go. USES: Network programming Example: Creating fast and reliable network applications like gRPC, used for communication between distributed systems. Distributed systems Example: Designing fault-tolerant systems like Etcd, a distributed key-value store used in clustering and configuration management. What can Go do? ❑ Build high-performance, concurrent applications ❑ Develop scalable web services and APIs ❑ Handle parallel processing and high concurrency efficiently Why Go? ❑ Simple and clean syntax ❑ Built-in support for concurrency (goroutines) ❑ Fast compilation and execution ❑ Strong standard library and tooling Good to Know: ❑ Latest versions: Go 1.21 that was released on August 2023 ❑ Uses curly brackets {} but semicolons are optional (handled automatically by the compiler) ❑ Designed for ease of deployment and maintenance in large-scale systems ❑ Efficient concurrency through goroutines and channels ❑ Known for simplicity, performance, and fast compile timesRust 08 A systems programming language focused on RUST safety, performance, and concurrency, developed by Mozilla and first released in 2010. USES: Systems programming Example: Developing operating systems like Redox, a Unix-like operating system written in Rust for enhanced security and performance. Performance-critical applications Example: Building game engines like Amethyst, where Rust’s memory safety and performance are critical for real-time rendering and game logic. USES: WebAssembly Example: Writing high-performance web applications using Rust compiled to WebAssembly, like running a real-time 3D physics engine in the browser. Safe concurrency tasks Example: Implementing concurrent applications in industries like finance or data processing, where Rust ensures thread safety without sacrificing performance, such as in Servo, a web browser engine designed to run in parallel. What can Rust do? ❑ Provide memory safety without a garbage collector ❑ Develop high-performance and reliable software ❑ Build concurrent applications with safety guarantees Why Rust? ❑ Strong emphasis on memory safety and performance ❑ Ownership system prevents common bugs ❑ Modern tooling and comprehensive standard library Good to Know: ❑ Latest version: Rust 1.80.1 ❑ Rust syntax uses curly brackets {} to define code blocks and semicolons ; to terminate statements, similar to C-family languages ❑ Compiles to native machine code, focusing on memory safety (using its ownership model) and performance efficiency ❑ Ideal for systems programming and performance-critical tasks ❑ Features zero-cost abstractions, ensuring high performance without sacrificing safety 09 A statically-typed programming language KOTLIN developed by JetBrains, officially supported for Android development and designed to be fully interoperable with Java. USES: Android app development Web development (Kotlin/JS) Server-side applications (Kotlin/JVM) Desktop applications OOP What can Kotlin do? ❑ Improve Android development productivity ❑ Write concise, expressive code with null safety ❑ Interoperate with existing Java codebases Why Kotlin? ❑ Concise and expressive syntax ❑ Null safety to prevent null pointer exceptions ❑ Full interoperability with Java Good to Know: ❑ Latest version is Kotlin 2.0+ ❑ Similar syntax to Java but with modern features like null safety, extension functions, and coroutines. ❑ Runs on the JVM, and can also be compiled to JavaScript or native code for platforms like iOS, Windows, and Linux. 10 A powerful and intuitive programming language SWIFT developed by Apple for iOS, macOS, watchOS, and tvOS development. USES: iOS app development Example: Building mobile apps for iPhones and iPads using Swift, such as creating a social media app like Instagram. macOS applications Example: Developing desktop apps for Mac, like a task management app for macOS. USES: Server-side development Example: Building a web API using Vapor, a server-side Swift framework, for handling backend tasks. Systems programming Example: Writing low-level code for systems using Swift’s safety features in embedded devices or operating system components. What can Swift do? ❑ Develop applications for Apple's ecosystem ❑ Write safe, high-performance code ❑ Use modern language features for easier development Why Swift? ❑ Modern, safe syntax with type inference ❑ Performance comparable to C++ ❑ Designed for safety and efficiency in Apple's platforms Good to know: ❑ Latest version is Swift 6 ❑ Swift uses concise syntax, incorporating features like optional for safe nullability handling and type inference to minimize the need for explicit type declarations ❑ Compilation of Swift runs on all of Apple's platforms (iOS, macOS, watchOS, tvOS) and is also suitable for server-side programming using frameworks like Vapor Ruby is a dynamic, object-oriented 11 RUBY programming language known for its simplicity and productivity. It was created by Yukihiro Matsumoto and first released in 1995. USES: Web Development Popular for building web applications, particularly with the Ruby on Rails framework. Data Analysis Used for processing and analyzing data, thanks to libraries like Pandas. Prototyping Quick prototyping of applications due to its simplicity and expressive syntax. Automation Useful for writing scripts to automate tasks. What can Ruby do? ❑ Build web applications with Ruby on Rails ❑ Write clean, readable code for various applications ❑ Quickly prototype and develop software Why Ruby? ❑ Elegant and readable syntax ❑ Strong support for object-oriented programming ❑ Rich ecosystem and frameworks like Rails Good to Know: ❑ Latest version: Ruby 3.x ❑ Uses dynamic typing and a flexible syntax ❑ Runs on various platforms with a focus on developer happiness A language developed by Google designed for 12 DART building mobile, web, and server applications, known for its use with the Flutter framework. USES: Mobile app development (Flutter) Developing cross-platform mobile applications using Flutter, a popular UI toolkit that allows for rapid development and native performance on both iOS and Android. Web development Creating modern web applications with rich user interfaces, utilizing Dart’s features to build fast and responsive front-end applications. Server-side applications Building backend services and APIs using Dart, leveraging its asynchronous capabilities for efficient handling of concurrent connections. What can Dart do? ❑ Build cross-platform mobile applications with Flutter ❑ Develop web applications ❑ Write high-performance, asynchronous code Why Dart? ❑ Optimized for UI development with Flutter ❑ Strong support for asynchronous programming ❑ Modern language features and performance Good to Know: ❑ Latest version: Dart 3.5 ❑ Uses a syntax similar to JavaScript and Java ❑ Compiles to native code for mobile apps and JavaScript for web applications7 A hybrid functional and object-oriented 13 SCALA programming language that runs on the JVM(Java Virtual Machine), developed by Martin Odersky and first released in 2003. USES: Web Development Building applications using the Play Framework for reactive web development. Data Processing Utilizing Apache Spark for efficient big data processing. Functional Programming Implementing functional programming paradigms for reliable code. General-Purpose Applications: Creating robust applications across various domains. What can Scala do? ❑ Combine object-oriented and functional programming ❑ Build scalable and concurrent applications ❑ Process large data sets with tools like Spark Why Scala? ❑ Combines functional and object-oriented programming paradigms ❑ Runs on the JVM and interoperates with Java ❑ Expressive syntax and powerful features Good to Know: ❑ Latest version: Scala 3.5 ❑ Uses a concise syntax with support for both functional and object-oriented styles ❑ Runs on the JVM, making it compatible with Java libraries and frameworks A high-level, high-performance programming 14 JULIA language designed for numerical and scientific computing, developed by Jeff Bezanson and others, first released in 2012. USES: Data Analysis Ideal for data manipulation with libraries like DataFrames. Scientific Computing Efficient for simulations and complex computations. Machine Learning Supports frameworks like Flux.jl for model building. High-Performance Tasks Excellent for applications in physics and engineering. What can Julia do? ❑ Perform high-speed numerical computations ❑ Handle large-scale data analysis and scientific simulations ❑ Develop machine learning models efficiently Why Julia? ❑ High performance comparable to C and Fortran ❑ Easy syntax for mathematical and scientific tasks ❑ Built-in support for parallel and distributed computing Good to Know: ❑ Latest version: Julia 1.9+ ❑ Uses a syntax similar to MATLAB and Python ❑ Designed for numerical and scientific applications with a focus on performance In conclusion, modern programming languages are constantly evolving to meet the wide range of software development requirements. Their emphasis on efficiency, scalability, and usability mirrors the computer industry's ever-changing landscape. These languages enable developers to create resilient, high-performance programs by adopting a variety of paradigms, including functional, object-oriented, and concurrent programming. As we look ahead, staying current on these languages is critical for adapting to new technologies and improving our programming skills. Thank you! Stay curious and passionate. Midterm ends here