Tips and Tricks for Increased Development EfficiencyOlivier Bourgeois
Short presentation targetted at university students showing some tools and software that are usually not talked about in courses which helps development productivity.
This event is part of our ongoing series about IT Security. In this session, Carl Svensson, a security professional working in the Google Offensive Security team, gives us an introduction to Binary Exploitation. Watch the recording at https://dscmunich.de/binexp
Tips and Tricks for Increased Development EfficiencyOlivier Bourgeois
Short presentation targetted at university students showing some tools and software that are usually not talked about in courses which helps development productivity.
This event is part of our ongoing series about IT Security. In this session, Carl Svensson, a security professional working in the Google Offensive Security team, gives us an introduction to Binary Exploitation. Watch the recording at https://dscmunich.de/binexp
In this session we will look over the various ways .NET is collecting memory, tips how to help GC perform better and tools that will save your day.
This is a must attend session for those who still do not know how to troubleshoot memory issues. For the rest it is a nice refresh and new look of features in .NET 4.5. As usual there will be lots of demos.
LOADays 2015 - syslog-ng - from log collection to processing and infomation e...BalaBit
Peter Czanik: syslog-ng - from log collection to processing and infomation extraction
LOADays 2015.
After a short introduction to system logging, we will show how the current log messages look like, and what the problem is with this free text format. Next, we will introduce you the powerful concept of name-value pairs, and how you can extract useful information from your logs by parsing log messages into name-value pairs. Next we will demonstrate the flexibility of syslog-ng’s message parsers (patterndb, csv and JSON parsers), and show you how to create patterns using a text editor or a GUI. This can also be used to overwrite sensitive information due to privacy regulations. At the end, you will learn about the Perl/Python/Lua/Java bindings of syslog-ng Open Source Edition, how value pairs can be passed to them, and some reference applications written for syslog-ng.
2015. Libre Software Meeting - syslog-ng: from log collection to processing a...BalaBit
Peter Czanik: syslog-ng - from log collection to processing and infomation extraction
2015. Libre Software Meeting
After a short introduction to system logging, we will show how the current log messages look like, and what the problem is with this free text format. Next, we will introduce you the powerful concept of name-value pairs, and how you can extract useful information from your logs by parsing log messages into name-value pairs. Next we will demonstrate the flexibility of syslog-ng’s message parsers (patterndb, csv and JSON parsers), and show you how to create patterns using a text editor or a GUI. This can also be used to overwrite sensitive information due to privacy regulations. At the end, you will learn about the Perl/Python/Lua/Java bindings of syslog-ng Open Source Edition, how value pairs can be passed to them, and some reference applications written for syslog-ng.
SCaLE 2016 - syslog-ng: From Raw Data to Big DataBalaBit
syslog-ng is an enhanced logging daemon, with a focus on central log collection. It collects logs from many different sources, processes and filters them and forwards them to a destination. This session focuses on how syslog-ng parses important information from incoming messages, how to send this information to “big data” destinations, like HDFS, Kafka, ElasticSearch or MongoDB.
Abstract: syslog-ng is an enhanced logging daemon, with a focus on central log collection. It collects logs from many different sources.
Raw log messages come in a variety of formats:
- lacking any structure most are usually just an almost proper English sentence with some variable parts in it, like user names or IP addresses.
- Fix table-like structure, like Apache access logs.
- A small minority of logs arrive in an already structured form: JSON.
Parsers in syslog-ng make it possible to extract important information from any of these messages and create name-value pairs.Once you have name-value pairs instead of raw log messages, you have many possibilities. On the syslog-ng side, you can use them for filtering, for example, to send an alert if the username is “root”. You can also use them in file names, or messages can be modified to facilitate log rotation or better suit applications processing the logs.
Parsing and preprocessing log messages also allows you to store them more effectively:
- you can send them to the destination (for example, ElasticSearch or MongoDB) in a format that can be easy to process (for example, JSON),
- you can filter irrelevant data, and forward only what is really needed,
- processing is off-loaded to very effective C code.
Finally you will learn about the “big data” destinations that syslog-ng supports, and how they benefit from message parsing:
- Hadoop Distributed File System ( HDFS ),
- Apache Kafka,
- ElasticSearch and Kibana, and
- MongoDB.
And if syslog-ng cannot already do something that you need, and you are not afraid of writing some code, you can learn about how language bindings of syslog-ng make it possible to add new destinations, not only in C, but also in Java, Lua, Perl, or Python.
Bio: Peter Czanik is community manager at Balabit, developers of syslog-ng. He helps distributions to maintain the syslog-ng package, follows bug trackers, helps users and talks regularly at conferences (FOSDEM, Libre Software Meeting, LOADays, Scale, etc.) In his limited free time he is interested in non-x86 architectures, and works on one of his PPC or ARM machines.
Agenda:
This talk will provide an in-depth review of the usage of canaries in the kernel and the interaction with userspace, as well as a short review of canaries and why they are needed in general so don't be afraid if you never heard of them.
Speaker:
Gil Yankovitch, CEO, Chief Security Researcher from Nyx Security Solutions
A basic Introduction to Rust. Rust is a modern system programming language which offering different approach than other existing new modern system programming languages to deal with: memory safety without GC, abstraction without overhead, and concurrency without data races.
presentation will make you aware about the programming techniques in shell , and will help you to build more strong foundation into the world of shell programming.
In this session we will look over the various ways .NET is collecting memory, tips how to help GC perform better and tools that will save your day.
This is a must attend session for those who still do not know how to troubleshoot memory issues. For the rest it is a nice refresh and new look of features in .NET 4.5. As usual there will be lots of demos.
LOADays 2015 - syslog-ng - from log collection to processing and infomation e...BalaBit
Peter Czanik: syslog-ng - from log collection to processing and infomation extraction
LOADays 2015.
After a short introduction to system logging, we will show how the current log messages look like, and what the problem is with this free text format. Next, we will introduce you the powerful concept of name-value pairs, and how you can extract useful information from your logs by parsing log messages into name-value pairs. Next we will demonstrate the flexibility of syslog-ng’s message parsers (patterndb, csv and JSON parsers), and show you how to create patterns using a text editor or a GUI. This can also be used to overwrite sensitive information due to privacy regulations. At the end, you will learn about the Perl/Python/Lua/Java bindings of syslog-ng Open Source Edition, how value pairs can be passed to them, and some reference applications written for syslog-ng.
2015. Libre Software Meeting - syslog-ng: from log collection to processing a...BalaBit
Peter Czanik: syslog-ng - from log collection to processing and infomation extraction
2015. Libre Software Meeting
After a short introduction to system logging, we will show how the current log messages look like, and what the problem is with this free text format. Next, we will introduce you the powerful concept of name-value pairs, and how you can extract useful information from your logs by parsing log messages into name-value pairs. Next we will demonstrate the flexibility of syslog-ng’s message parsers (patterndb, csv and JSON parsers), and show you how to create patterns using a text editor or a GUI. This can also be used to overwrite sensitive information due to privacy regulations. At the end, you will learn about the Perl/Python/Lua/Java bindings of syslog-ng Open Source Edition, how value pairs can be passed to them, and some reference applications written for syslog-ng.
SCaLE 2016 - syslog-ng: From Raw Data to Big DataBalaBit
syslog-ng is an enhanced logging daemon, with a focus on central log collection. It collects logs from many different sources, processes and filters them and forwards them to a destination. This session focuses on how syslog-ng parses important information from incoming messages, how to send this information to “big data” destinations, like HDFS, Kafka, ElasticSearch or MongoDB.
Abstract: syslog-ng is an enhanced logging daemon, with a focus on central log collection. It collects logs from many different sources.
Raw log messages come in a variety of formats:
- lacking any structure most are usually just an almost proper English sentence with some variable parts in it, like user names or IP addresses.
- Fix table-like structure, like Apache access logs.
- A small minority of logs arrive in an already structured form: JSON.
Parsers in syslog-ng make it possible to extract important information from any of these messages and create name-value pairs.Once you have name-value pairs instead of raw log messages, you have many possibilities. On the syslog-ng side, you can use them for filtering, for example, to send an alert if the username is “root”. You can also use them in file names, or messages can be modified to facilitate log rotation or better suit applications processing the logs.
Parsing and preprocessing log messages also allows you to store them more effectively:
- you can send them to the destination (for example, ElasticSearch or MongoDB) in a format that can be easy to process (for example, JSON),
- you can filter irrelevant data, and forward only what is really needed,
- processing is off-loaded to very effective C code.
Finally you will learn about the “big data” destinations that syslog-ng supports, and how they benefit from message parsing:
- Hadoop Distributed File System ( HDFS ),
- Apache Kafka,
- ElasticSearch and Kibana, and
- MongoDB.
And if syslog-ng cannot already do something that you need, and you are not afraid of writing some code, you can learn about how language bindings of syslog-ng make it possible to add new destinations, not only in C, but also in Java, Lua, Perl, or Python.
Bio: Peter Czanik is community manager at Balabit, developers of syslog-ng. He helps distributions to maintain the syslog-ng package, follows bug trackers, helps users and talks regularly at conferences (FOSDEM, Libre Software Meeting, LOADays, Scale, etc.) In his limited free time he is interested in non-x86 architectures, and works on one of his PPC or ARM machines.
Agenda:
This talk will provide an in-depth review of the usage of canaries in the kernel and the interaction with userspace, as well as a short review of canaries and why they are needed in general so don't be afraid if you never heard of them.
Speaker:
Gil Yankovitch, CEO, Chief Security Researcher from Nyx Security Solutions
A basic Introduction to Rust. Rust is a modern system programming language which offering different approach than other existing new modern system programming languages to deal with: memory safety without GC, abstraction without overhead, and concurrency without data races.
presentation will make you aware about the programming techniques in shell , and will help you to build more strong foundation into the world of shell programming.
Zephyr RTOS in One Hour | HARDWARIO @ IoT North UKHARDWARIO
Pavel Hübner (from HARDWARIO) will provide a crash course into the Zephyr RTOS. Zephyr is an innovative operating system targeting 32-bit microcontrollers and is suitable for connected IoT products. Such devices are often low-power and provide a multi-year battery lifespan. The ambitious 60-minute live session with be held on a configurable IoT gateway CHESTER - a platform based on Nordic Semiconductor SoCs nRF52840 / nRF9160. Throughout the course, Pavel will go from the key Zephyr fundamentals to connecting a fully-fledged IoT application over the NB-IoT network.
Script of ScriptsPolyglot Notebook and Workflow SystemBo Peng
Script of ScriptsPolyglot Notebook and Workflow System for both Interactive Multi-language Data Analysis and Batch Data Processing. Video at https://youtu.be/U75eKosFbp8
Try to imagine the amount of time and effort it would take you to write a bug-free script or application that will accept a URL, port scan it, and for each HTTP service that it finds, it will create a new thread and perform a black box penetration testing while impersonating a Blackberry 9900 smartphone. While you’re thinking, Here’s how you would have done it in Hackersh:
“http://localhost” \
-> url \
-> nmap \
-> browse(ua=”Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+”) \
-> w3af
Meet Hackersh (“Hacker Shell”) – A new, free and open source cross-platform shell (command interpreter) with built-in security commands and Pythonect-like syntax.
Aside from being interactive, Hackersh is also scriptable with Pythonect. Pythonect is a new, free, and open source general-purpose dataflow programming language based on Python, written in Python. Hackersh is inspired by Unix pipeline, but takes it a step forward by including built-in features like remote invocation and threads. This 120 minute lab session will introduce Hackersh, the automation gap it fills, and its features. Lots of demonstrations and scripts are included to showcase concepts and ideas.
UCSD NANO 266 Quantum Mechanical Modelling of Materials and Nanostructures is a graduate class that provides students with a highly practical introduction to the application of first principles quantum mechanical simulations to model, understand and predict the properties of materials and nano-structures. The syllabus includes: a brief introduction to quantum mechanics and the Hartree-Fock and density functional theory (DFT) formulations; practical simulation considerations such as convergence, selection of the appropriate functional and parameters; interpretation of the results from simulations, including the limits of accuracy of each method. Several lab sessions provide students with hands-on experience in the conduct of simulations. A key aspect of the course is in the use of programming to facilitate calculations and analysis.
Conflux provides a parallel programming framework to use CPUs and GPUs in collaboration as components of an integrated computing system. Conflux proposes already known kernel-based architecture that is compatible with CUDA,
A broad introduction to Java.
What is Java and where is it used
Programming Languages in the web development
What is Java and where is it used
OOP PRINCIPLES
JAVA SE, JRE, JDK
IDE’s
Where Java used in the “Real World”
Using Complex Network Analysis for PeriodizationDmitry Zinoviev
Periodization is the process of categorizing the past into discrete, contiguous, quantified, and named blocks of time and the results of such a process. I propose to model historical states as complex networks and use complex network analysis (CNA) for periodization.
The majority of the USA population still believe people with serious mental illness (SMI) are dangerous. SMI and dangerousness have been recurring topics of newspaper coverage for some time. What aspects, if any, have been associated in mainstream American media with SMI? Are there historical periods where significant sociopolitical events have occurred e.g., war, economic depression, immigration shifts, that have impacted the balance of positive and negative those aspects?
Roles and Words in a massive NSSI-Related Interaction NetworkDmitry Zinoviev
Non-suicidal self-injury (NSSI), such as self-cutting or self-burning, is the deliberate destruction of one’s body tissue in the absence of suicidal intent. Approximately one in five of adolescents and one in four of young adults in the USA often referred to as “self-cutters,” have engaged in NSSI. The goal of the study is to analyze the topology of an interaction network of the NSSI-related users and compare it to the vocabulary of the blog posts and comments.
Network analysis of the 2016 USA presidential campaign tweetsDmitry Zinoviev
This is an IC2S2 presentation.
Donald Trump has been an avid user of Twitter before, throughout, and in the aftermath of the 2017 USA presidential election campaign. Secretary Hillary Clinton, the Democratic Party candidate, was active on Twitter only from the beginning to end of the campaign. The goal of this research is to reconstruct the timeline and logic of the campaign using complex network analysis of President Trump's and Secretary Clinton's tweets.
We analyzed 20,000 tweets posted by Trump in January 2014--December 2017, covering all three major stages of his quest for the Presidency. The tweets are composed of 14,373 distinct, unstemmed terms (words, word combinations, and hashtags). For further analysis, we selected only 300 base terms that occurred in the whole corpus at least 100 times. We grouped the tweets by months into 48 tweet corpora and converted them into a network, based on the similarity of the vocabulary. Each network node represents a monthly corpus. We connected two nodes with a weighted edge if the frequencies of the base terms in the corresponding corpora were strongly correlated (with the Pearson correlation coefficient, serving as the weight of the edge, at or above 0.6).
The corpus consists of two clusters: April 2015 (when Clinton announced her intention to run)--March 2016 and April 2016--November 2016 (the general election). Interestingly, the boundary between the clusters corresponds to the campaign stages, too---but those of Trump rather than Clinton: it is located in the middle of the Republican Party primary elections. We hypothesize that throughout the campaign Secretary Clinton was in the defensive position and had to respond to the challenges posed by Trump, rather than form her agenda (at least on Twitter). We will further look into the cross-correlations between the tweet corpora of the two major presidential candidates to get a better sense of their ``leader-follower'' relationship.
An example of how automated text analysis leads, through social network construction, to recognition of key plot lines and characters in a fiction book.
Soviet Popular Music Landscape: Community Structure and Success PredictorsDmitry Zinoviev
More than 4,600 non-academic music groups emerged in the USSR and post-Soviet independent nations in 1960–2015, performing in 275 genres and sub-genres, including rock, pop, disco, jazz, and folk. Some of the groups became legends and survived for decades, while others vanished and are known now only to select music history scholars and fans. The total number of unique performers in all groups exceeds 17,000, and at least 3,600 of them participated in more than one project.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
2. TIOBE Top 20
2016 2015 2016 2015
Java 1 1 Assembly 11 12
C 2 2 Swift 12 15
C++ 3 3 Ruby 13 10
C# 4 4 Visual Basic 14 13
Python 5 5 Delphi 15 11
JavaScript 6 8 Go 16 65
PHP 7 6 Groovy 17 32
VB .Net 8 7 R 18 20
Perl 9 9 Matlab 19 17
Objective C 10 14 SQL 20 18
TIOBE Web Site
3. Assembly Languages
● Directly correspond to machine languages
● Allow to address memory in a symbolic way (“variables”)
● Examples:
– Microsoft assembler (masm, 1981), GNU assembler (gas),
Netwide assembler (nasm)
5. Procedural Languages
● A program composed of units (modules)
● A unit is called a procedure, function, routine, subroutine,
method
● Examples:
– Fortran (1957), Algol (1958), Cobol (1959), PL/I (1964),
BASIC (1964), Pascal (1970), C (1972), Ada (1977),
Modula-2 (1978), Rapira (1980), C++ (1983), Occam
(1983), Python (1991), Visual Basic 91991), Java (1995),
C# (2000), Go (2009)
6. FORTRAN (Fortran)
● “Formula Translation.” First general-purpose language
PROGRAM AVERAGE
REAL X,Y
WRITE (*,*) "Input x:"
READ (*,*) X
WRITE (*,*) "Input y:"
READ (*,*) Y
WRITE (*,'(a,g12.4)') 'Average = ', (x+y)/2
END PROGRAM AVERAGE
● Data type determined by the first letter of the identifier: “In
Fortran, GOD is REAL (unless declared INTEGER).”
7. C
● The language of Unix system programming
● The “founding father” of most modern languages
#include <stdio.h>
int main(void)
{
int id;
scanf("%d", &id)
printf("hello, %dn", id);
}
● Great flexibility; great power; great responsibility
8. Java
● A “safer” C
● Object-oriented: data and methods grouped into objects; no
global variables
● Uses virtual machine (VM), runs on anything that has a VM
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
9. Modula-2
● A “Niklaus Wirth” language
● Based on Pascal
● Suitable for system programming (but not perfect); supports
multiprogramming
MODULE Hello;
FROM STextIO IMPORT WriteString;
BEGIN
WriteString("Hello World!");
END Hello.
10. Functional Languages
● Programs and subroutines defined as mathematical functions
● Pure* languages do not have variables at all; Python is impure
● Examples:
– Lisp (1958), APL (1964), C (1972), ML (1973), Erlang
(1986), Haskell* (1990), Python (1991), Ruby (1995), C#
(2000), Scala (2004), Java 8 (2014)
11. Lisp
● Favorite language for AI
● Lists are the only major data structure; a program itself is a list
● Modern implementations: Common Lisp, Clojure, Scheme
(defun check (name age)
(if (and (eq name "James") (> age 21))
(list "Welcome, James!" age)
(list "Go home, kid!" nil)))
(prin1 (check "Paul" 24))
● “Lots of Irritating Single Parentheses”
12. Erlang
● Ericsson Language, developed for telecom switches
● Concurrent, distributed, fault-tolerant, soft real-time
● Non-stop applications, code hot swapping, runs on VM
● Has built-in database and Web server
-module(fib).
-export([fib/1]).
fib(1) -> 1;
fib(2) -> 1;
fib(N) -> fib(N - 2) + fib(N - 1).
13. Query Languages
● Designed to insert data into and extract data from databases
and other information retrieval systems
● Declarative: describe a problem rather than define a solution
● Examples:
– SQL/MySQL (1974), XQuery (2007)
SELECT author,title
FROM book
WHERE price > 100.00
ORDER BY author;
14. Command Line Languages
● Means of user interaction with the operating system
● Provide prompt; accept commands with optional parameters
● Allow limited support for procedural programming
● Examples:
– Sh (1977), csh (1978), tcsh (1983), ksh (1983), bash (1989),
zsh (1990)
15. C Shell / TC Shell
● The Unix system written in C; the C shell is the standard Unix
shell
● Provides command history and editing, directory stack, file
name completion, aliases, wildcarding, piping, background
execution
if ( $days > 365 ) then
echo This is over a year.
endif
16. Little Languages
● Serve a specialized problem domain
● Example:
– awk (1977; text processing and data extraction)
$1>0 { s += $1 }
END { print s }
18. Lolcode
● Created in 2007 by Adam Lindsay (Lancaster University).
HAI 1.2
CAN HAS STDIO?
PLZ OPEN FILE "LOLCATS.TXT"?
AWSUM THX
VISIBLE FILE
O NOES
INVISIBLE "ERROR!"
KTHXBYE
19. Brainfuck
● An esoteric language notable for its extreme minimalism. 100
byte compiler!
“Hello world!”:
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.
+++++++..+++.>++.<<+++++++++++++++.>.++
+.------.--------.>+.