Using the Go Programming Language in Practice
|
|
- Beverly Quinn
- 6 years ago
- Views:
Transcription
1 Using the Go Programming Language in Practice Erik Westrup & Fredrik Pettersson Department of Computer Science, Lund University Axis Communications, Sweden May 28, 2014 Supervisors: Jonas Skeppstedt (also Examiner) Mathias Bruce Robert Rosengren
2 Authors Erik Westrup M.Sc. in Computer Science & Engineering, Lund University 2009 From: Ljunghusen, Sweden $EDITOR=vim $BROWSER=firefox+pentadactyl colorscheme=solarized Fredrik Pettersson M.Sc. in Computer Science & Engineering, Lund University 2009 From: Halmstad, Sweden $EDITOR=sublime2 $BROWSER=chromium colorscheme=solarized
3 Table of Contents Introduction Approach Discussion Conclusions
4 Introduction
5 Outline Introduction to Go Designed by: Ken Thompson, Rob Pike et al. at Google Appeared in 2009 Open source
6 Outline Introduction to Go Designed by: Ken Thompson, Rob Pike et al. at Google Appeared in 2009 Open source
7 Outline Introduction to Go Designed by: Ken Thompson, Rob Pike et al. at Google Appeared in 2009 Open source Meets large-scale dev. problems including: long build times uncontrolled dependencies hard to understand code
8 Outline Purpose & Goals Review of Go + tools Go for embedded programming? How to review a language?
9 Outline Problem Formulation
10 Outline Problem Formulation Go Easy to learn? Mature? Future?
11 Outline Problem Formulation Go Easy to learn? Mature? Future? Building & Compiling Easy? Fast? Avoid tools like Makefiles? Cross-compilation C-integration?
12 Outline Problem Formulation Go Easy to learn? Mature? Future? Development tools? Software Product & Development Qualities? Building & Compiling Easy? Fast? Avoid tools like Makefiles? Cross-compilation C-integration?
13 Approach
14 The Go Programming Language Language design goals
15 The Go Programming Language Language design goals Features Simple specification Easy to understand code C-like syntax Compiled & statically typed Type inference
16 The Go Programming Language Language design goals Features Simple specification Easy to understand code C-like syntax Compiled & statically typed Type inference OOP: interfaces, structs & composition Concurrency: goroutines & channels Garbage collection
17 The Go Programming Language Language design goals Features Simple specification Easy to understand code C-like syntax Compiled & statically typed Type inference OOP: interfaces, structs & composition Concurrency: goroutines & channels Garbage collection Lack of Features Type-orientation: inheritance Generics Exceptions Fat standard library Pointer arithmetic
18 The Go Programming Language Hello, world 1 package main 2 3 import " fmt " 4 5 func main ( ) { 6 fmt. P r i n t l n ( " Hello, World! " ) 7 }
19 The Go Programming Language Types 1 v a r i i n t 2 v a r s [ ] b o o l 3 v a r m map [ i n t ] s t r i n g 4 f := 3.14
20 The Go Programming Language Declaration order C, inside-out: t y p e d e f char ( ( f u n c _ c o l l e c t i o n [ 1 ] ) ) ( i n t ) ;
21 The Go Programming Language Declaration order C, inside-out: t y p e d e f char ( ( f u n c _ c o l l e c t i o n [ 1 ] ) ) ( i n t ) ; Go, left-to-right: type f u n c C o l l e c t i o n [ 1 ] ( func ( i n t ) s t r i n g )
22 The Go Programming Language Multiple return values & errors 1 func check ( i n p u t s t r i n g ) ( r e s u l t s t r i n g, e r r e r r o r ) { 2 e r r =... 3 r e s u l t =... 4 r e t u r n 5 }
23 The Go Programming Language Structs & Method receivers 1 type Object s t r u c t { 2 name s t r i n g 3 } 4 5 func ( o Object ) S t r i n g ( ) s t r i n g { 6 r e t u r n fmt. S p r i n t f ( " Object %s ", o. name ) 7 }
24 The Go Programming Language Interfaces 1 type S t r i n g e r i n t e r f a c e { 2 S t r i n g ( ) s t r i n g 3 }
25 The Go Programming Language Composition with struct-embedding 1 type B s t r u c t { 2 bdata i n t 3 } 4 5 type A s t r u c t { 6 adata i n t 7 B 8 } 9 10 func ( b B) o p e r a t e ( ) { 11 }
26 Concurrency goroutines Lightweight threads Multiplexed into OS threads go work ( )
27 Concurrency Channels For goroutine communication Declared for a given type Synchronized or asynchronized Replaces semaphores/mutexes 1 v a r c h a n n e l chan i n t 2 c h a n n e l < 8 // Send 3 i := < c h a n n e l // R e c e i v e
28 Developer tools Go tools $ go h e l p Go i s a t o o l f o r managing Go s o u r c e code. Usage : go command [ arguments ] The commands a r e : b u i l d c o m p i l e packages & d e p e n d e n c i e s fmt run gofmt on package s o u r c e s get download & i n s t a l l packages & d e p e n d e n c i e s t e s t t e s t packages......
29 Developer tools Building Easy to use Automated Smart dependency resolution The environment $ go b u i l d <package>
30 Developer tools gc vs gccgo
31 Developer tools gc vs gccgo gc (Go Compiler) Default compiler Ideas from Plan 9 compilers OSes: Linux, FreeBSD, OS X, Windows Architectures: i386, amd64, arm
32 Developer tools gc vs gccgo gc (Go Compiler) Default compiler Ideas from Plan 9 compilers OSes: Linux, FreeBSD, OS X, Windows Architectures: i386, amd64, arm gccgo Front-end for GCC OSes: Linux, BSD, OS X, Windows, IRIX, Solaris Architectures: i386, x86_64, amd64, arm, arm64, mips, alpha, m68k, powerpc, sparc
33 Developer tools Cross-compiling with gccgo Building x-gccgo As easy as building x-compiler for C
34 Developer tools Cross-compiling with gccgo Building x-gccgo As easy as building x-compiler for C Building x-compiler is very challenging
35 Developer tools Cross-compiling with gccgo Building x-gccgo As easy as building x-compiler for C Building x-compiler is very challenging Helper tools currently problematic Built a 4.9 GCC x-toolchain.
36 Developer tools Cross-compiling with gccgo Building x-gccgo As easy as building x-compiler for C Building x-compiler is very challenging Helper tools currently problematic Built a 4.9 GCC x-toolchain. Go + gccgo Unresolved issue
37 Developer tools C-Integration Tool: cgo Go-code: C-code & compiler directives in comments Can use C-symbols Can convert C Go types C-code: Can use Go-symbols
38 Developer tools C-Integration Tool: cgo Go-code: C-code & compiler directives in comments Can use C-symbols Can convert C Go types C-code: Can use Go-symbols Problems: Callbacks, pointers, macros etc.
39 Developer tools Debugging GDB works, bad goroutine & core dump support Uncertain GDB future Go-specific debugger?
40 Developer tools Other tools Many good tools exists: Built-in: Testing Documentation Code formatter Package manager Text editors & IDEs Convenient tools
41 Discussion
42 The Go Programming Language Design Goals Less is exponentially more Rob Pike
43 The Go Programming Language How did it turn out? U Well afterthought language d Flexible OOP U UGenerics: Necessary? Awesome concurrency model
44 Developer Tools Building U D Zero project startup cost U Less control & understandability D Better in the long run Warnings = Errors
45 Developer Tools gc vs gccgo
46 Developer Tools gc vs gccgo gc U Up-to-date Fast D Few architectures Only static linking
47 Developer Tools gc vs gccgo gc U Up-to-date Fast D Few architectures Only static linking U gccgo Supports many platforms D Slower U Dynamic linking D Different release schedule
48 Developer Tools Cross-Compilation D Uncertain Go + gccgo combination LLVM is the future?
49 Developer Tools C-Integration U Works well in simple cases Code in comments Locating errors D Wrapper-functions Slower builds
50 Developer Tools Other Tools U Simplifies development D No version support Package manager U D Testing & documentation State of debugging
51 Community & Future Community U Contributes to Go & tools U Friendly & helpful U Lead developers participate
52 Community & Future Future of Go U Stabilization/optimization of tools D Embedded programming: mild interest
53 Community & Future Future of Go U Stabilization/optimization of tools D Embedded programming: mild interest Google goes, Go goes? Competing languages?
54 Reviewing a Programming Language Worth Doing a Project?
55 Reviewing a Programming Language Worth Doing a Project? Yes! (if relevant & restricted) Reveals the true nature
56 Conclusions
57 Summary Summary U Easy to learn & adopt U Suitable for large-scale projects U Concurrency
58 Summary Summary Easy to learn & adopt U Suitable for large-scale projects Concurrency D Complicated C-integration U Cross-compilation with go + gccgo Reviewing languages larger project
59 Summary Summary Easy to learn & adopt U Suitable for large-scale projects Concurrency D Complicated C-integration U Cross-compilation with go + gccgo Reviewing languages larger project Go for Embedded? Wait a while
60 Summary Summary Easy to learn & adopt U Suitable for large-scale projects Concurrency D Complicated C-integration U Cross-compilation with go + gccgo Reviewing languages larger project Go for Embedded? Wait a while
61 Future Research Future Research Effectiveness of goroutines gc & gccgo optimization & compilation speed comparison Debugging Memory profiling + C-integration
62 Learn Go Have a couple of hours to spare? Learn Go! tour.golang.org
63 Learn Go Have a couple of hours to spare? Learn Go! tour.golang.org Download our bit.ly/go-thesis
Develop your Embedded Applications Faster: Comparing C and Golang. Marcin Pasinski Mender.io
Develop your Embedded Applications Faster: Comparing C and Golang Marcin Pasinski Mender.io My view on C vs Go I think Go is great and very productive programming language It excels when developing networking
More informationGo on NetBSD (and pkgsrc!) A modern systems programming language 23 March Benny Siegert Google Switzerland; The NetBSD Foundation
Go on NetBSD (and pkgsrc!) A modern systems programming language 23 March 2013 Benny Siegert Google Switzerland; The NetBSD Foundation Agenda What is Go? Building Go code with the gotool Running Go code
More informationThe Awesomeness of Go. Igor Lankin DevFest Karlsruhe, Nov 2016
The Awesomeness of Go Igor Lankin DevFest Karlsruhe, Nov 2016 Igor Lankin Software Developer @ inovex C#, Java, Java Script, full-time GO (waipu.tv ) 2 What is Go? 3 An Awesome Programming Language 4 Imagine
More informationNew Parallel Programming Languages for Optimization Research
New Parallel Programming Languages for Optimization Research John W. Chinneck, Stephane Ernst Systems and Computer Engineering Carleton University, Ottawa, Canada Motivation Challenges for optimization
More informationMotivations History Principles Language Gommunity Success stories Conclusion. Let s Go! A brief introduction to Google s new language.
Let s Go! A brief introduction to Google s new language Aurélien Dumez Inria Bordeaux - Sud-Ouest aurelien.dumez@inria.fr Tuesday, October 2nd 2012 Content - 1/2 1 2 3 4 Characteristics SDK vs Examples
More informationThe Go Programming Language. Frank Roberts
The Go Programming Language Frank Roberts frank.roberts@uky.edu - C++ (1983), Java (1995), Python (1991): not modern - Java is 18 years old; how has computing changed in 10? - multi/many core - web programming
More informationA Plan 9 C Compiler for RISC-V
A Plan 9 C Compiler for RISC-V Richard Miller r.miller@acm.org Plan 9 C compiler - written by Ken Thompson for Plan 9 OS - used for Inferno OS kernel and limbo VM - used to bootstrap first releases of
More informationGo vs. Swift: The Languages of The Modern Tech Giants
Go vs. Swift: The Languages of The Modern Tech Giants Jake Rockland github.com/jakerockland/go-vs-swift December 20, 2016 1 Abstract This project stands as a comparative exploration of Go and Swift, the
More informationGo Cheat Sheet. Operators. Go in a Nutshell. Declarations. Basic Syntax. Hello World. Functions. Comparison. Arithmetic. Credits
Credits Go Cheat Sheet Most example code taken from A Tour of Go, which is an excellent introduction to Go. If you're new to Go, do that tour. Seriously. Original HTML Cheat Sheet by Ariel Mashraki (a8m):
More informationLDC: The LLVM-based D Compiler
LDC: The LLVM-based D Compiler Using LLVM as backend for a D compiler Kai Nacke 02/02/14 LLVM devroom @ FOSDEM 14 Agenda Brief introduction to D Internals of the LDC compiler Used LLVM features Possible
More informationWORKSHOP: from Zero to a Network Application with #golang
WORKSHOP: from Zero to a Network Application with #golang Patrick Riel, priel@cisco.com Stève Sfartz, stsfartz@cisco.com Cisco Spark How Questions? Use Cisco Spark to communicate with the speaker after
More informationIntroduzione a Go e RPC in Go
Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Introduzione a Go e RPC in Go Corso di Sistemi Distribuiti e Cloud Computing A.A. 2017/18 Valeria Cardellini
More informationLecture 22 Go http://xkcd.com/979/ Go developed ~2007 at Google by Robert Griesemer, Rob Pike, Ken Thompson open sourced in 2009 compiled, statically typed very fast compilation C-like syntax garbage collection
More informationdeveloped ~2007 by Robert Griesemer, Rob Pike, Ken Thompson open source
Go developed ~2007 by Robert Griesemer, Rob Pike, Ken Thompson open source compiled, statically typed syntax looks sort of like C garbage collection built-in concurrency no classes or type inheritance
More informationGo Language September 2016
Go Language September 2016 Giacomo Tartari PhD student, University of Tromsø http://127.0.0.1:3999/golang2016.slide#34 1/53 Go http://127.0.0.1:3999/golang2016.slide#34 2/53 Why? Rob Pike's take (one of
More informationErlang and Go (CS262a, Berkeley Fall 2016) Philipp Moritz
Erlang and Go (CS262a, Berkeley Fall 2016) Philipp Moritz The Problem Distributed computation is hard! State Hard to do recovery, dependency on order of execution Concurrency and Synchronization Hard to
More informationMerge Sort Quicksort 9 Abstract Windowing Toolkit & Swing Abstract Windowing Toolkit (AWT) vs. Swing AWT GUI Components Layout Managers Swing GUI
COURSE TITLE :Introduction to Programming 2 COURSE PREREQUISITE :Introduction to Programming 1 COURSE DURATION :16 weeks (3 hours/week) COURSE METHODOLOGY:Combination of lecture and laboratory exercises
More informationUpdating the Compiler?
Updating the Compiler? Take Advantage of The New Development Toolchain Andreas Jaeger Product Manager aj@suse.com Programming Languages C C++ Fortran And Go 2 Why new compiler? Faster applications Support
More informationIntroduction to pthreads
CS 220: Introduction to Parallel Computing Introduction to pthreads Lecture 25 Threads In computing, a thread is the smallest schedulable unit of execution Your operating system has a scheduler that decides
More informationOperating Systems (ECS 150) Spring 2011
Operating Systems (ECS 150) Spring 2011 Raju Pandey Department of Computer Science University of California, Davis CA 95616 pandey@cs.ucdavis.edu http://www.cs.ucdavis.edu/~pandey Course Objectives After
More informationLet s Go! Akim D le, Etienne Renault, Roland Levillain. June 8, TYLA Let s Go! June 8, / 58
Let s Go! Akim Demaille, Etienne Renault, Roland Levillain June 8, 2017 TYLA Let s Go! June 8, 2017 1 / 58 Table of contents 1 Overview 2 Language Syntax 3 Closure 4 Typed functional programming and Polymorphism
More informationGo Forth and Code. Jonathan Gertig. CSC 415: Programing Languages. Dr. Lyle
J o n a t h a n G e r t i g P a g e 1 Go Forth and Code Jonathan Gertig CSC 415: Programing Languages Dr. Lyle 2013 J o n a t h a n G e r t i g P a g e 2 Go dogs Go or A Brief History of Go 6 years ago
More informationJython. An introduction by Thinh Le
Jython An introduction by Thinh Le precursor_python! Google App Engine! Dropbox! PyGTK (Gnome)! Vim (embedded)! BitTorrent/Morpheus! Civilization/Battlefield Jython! Interpretation of Python (1997)! Jim
More informationIntroduction to Linux
Introduction to Linux EECS 211 Martin Luessi April 14, 2010 Martin Luessi () Introduction to Linux April 14, 2010 1 / 14 Outline 1 Introduction 2 How to Get Started 3 Software Development under Linux 4
More informationPortland State University Maseeh College of Engineering and Computer Science. Proficiency Examination Process
Portland State University Maseeh College of Engineering and Computer Science Proficiency Examination Process 2016-2017 PSU Expectations of Student Competencies Students that apply to PSU s Computer Science
More informationCSE 124 Discussion (10/3) C/C++ Basics
CSE 124 Discussion (10/3) C/C++ Basics Topics - main() function - Compiling with gcc/makefile - Primitives - Structs/Enums - Function calls/loops - C++ Classes/stdtl - Pointers/Arrays - Memory allocation/freeing
More informationYou can also launch the instances on different machines by supplying IPv4 addresses and port numbers in the format :3410
CS 3410: Paxos Introduction In this assignment, you will implement a simple in-memory database that is replicated across multiple hosts using the Paxos distributed consensis protocol. You can download
More informationPRINCIPLES OF OPERATING SYSTEMS
PRINCIPLES OF OPERATING SYSTEMS Tutorial-1&2: C Review CPSC 457, Spring 2015 May 20-21, 2015 Department of Computer Science, University of Calgary Connecting to your VM Open a terminal (in your linux machine)
More informationCCured. One-Slide Summary. Lecture Outline. Type-Safe Retrofitting of C Programs
CCured Type-Safe Retrofitting of C Programs [Necula, McPeak,, Weimer, Condit, Harren] #1 One-Slide Summary CCured enforces memory safety and type safety in legacy C programs. CCured analyzes how you use
More informationgo get my/vulnerabilities Green threads are not eco friendly threads
go get my/vulnerabilities Green threads are not eco friendly threads 1 Who ( Web Mobile ) penetration tester Code reviewer Programmer Roberto Clapis @empijei 2 Go Google s language Born in 2007 (quite
More informationGo for Java Developers
Go for Java Developers Stoyan Rachev May 26-27 16, Sofia 1 Agenda Introduction Variables and Control Flow Types and Data Structures Functions Methods and Interfaces Concurrency Conclusion 2 What is Go?
More informationPrograms. Function main. C Refresher. CSCI 4061 Introduction to Operating Systems
Programs CSCI 4061 Introduction to Operating Systems C Program Structure Libraries and header files Compiling and building programs Executing and debugging Instructor: Abhishek Chandra Assume familiarity
More informationOPERATING SYSTEM. Chapter 4: Threads
OPERATING SYSTEM Chapter 4: Threads Chapter 4: Threads Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues Operating System Examples Objectives To
More informationSWEN-250 Personal SE. Introduction to C
SWEN-250 Personal SE Introduction to C A Bit of History Developed in the early to mid 70s Dennis Ritchie as a systems programming language. Adopted by Ken Thompson to write Unix on a the PDP-11. At the
More informationCUDA Development Using NVIDIA Nsight, Eclipse Edition. David Goodwin
CUDA Development Using NVIDIA Nsight, Eclipse Edition David Goodwin NVIDIA Nsight Eclipse Edition CUDA Integrated Development Environment Project Management Edit Build Debug Profile SC'12 2 Powered By
More informationGo Tutorial. To do. A brief, gentle intro to Go. Next Networking. q Today
Go Tutorial To do q Today A brief, gentle intro to Go q Next Networking About Go Developed by Google Webpage: https://golang.org/ Concurrency was a priority in the language design A bit of a mix between
More informationRheinisch-Westfälische Technische Hochschule Aachen. Lehrstuhl für Datenmanagement und -exploration Prof. Dr. T. Seidl. Proseminar.
Rheinisch-Westfälische Technische Hochschule Aachen Lehrstuhl für Datenmanagement und -exploration Prof. Dr. T. Seidl Proseminar Google Go illustrated on the basis of Fibonacci numbers Jan Pennekamp Mai
More informationEMBEDDED LINUX ON ARM9 Weekend Workshop
Here to take you beyond EMBEDDED LINUX ON ARM9 Weekend Workshop Embedded Linux on ARM9 Weekend workshop Objectives: Get you exposed with various trends in Embedded OS Leverage Opensource tools to build
More informationSoftware Project. Lecturers: Ran Caneti, Gideon Dror Teaching assistants: Nathan Manor, Ben Riva
Software Project Lecturers: Ran Caneti, Gideon Dror Teaching assistants: Nathan Manor, Ben Riva Emails: (canetti/benriva)@post.tau.ac.il nathan.manor@gmail.com gideon@mta.ac.il http://www.cs.tau.ac.il/~roded/courses/soft-project10.html
More informationIndex. object lifetimes, and ownership, use after change by an alias errors, use after drop errors, BTreeMap, 309
A Arithmetic operation floating-point arithmetic, 11 12 integer numbers, 9 11 Arrays, 97 copying, 59 60 creation, 48 elements, 48 empty arrays and vectors, 57 58 executable program, 49 expressions, 48
More informationIntroduction p. 1 Why Linux? p. 2 Embedded Linux Today p. 3 Open Source and the GPL p. 3 Free Versus Freedom p. 4 Standards and Relevant Bodies p.
Foreword p. xix Preface p. xxi Acknowledgments p. xxvii About the Author p. xxix Introduction p. 1 Why Linux? p. 2 Embedded Linux Today p. 3 Open Source and the GPL p. 3 Free Versus Freedom p. 4 Standards
More informationShow and Tell. 1. Plan 9 Things (brief) 2. An Extensible Compiler for Systems Programming. Russ Cox 1127 Show and Tell April 19, 2005
Show and Tell 1. Plan 9 Things (brief) 2. An Extensible Compiler for Systems Programming Russ Cox rsc@plan9 1127 Show and Tell April 19, 2005 who am i... Neighborhood kid 1995 summer hacking Excel (jlb)
More informationUse of the LLVM framework for the MSIL code generation
Use of the LLVM framework for the code generation Artur PIETREK artur.pietrek@imag.fr VERIMAG Kalray (Montbonnot) DCS seminar March 27, 2009 1 2 3 4 5 6 7 Outline The code generator is a part of the thesis:
More informationYaffs Tuning. Charles Manning
Yaffs Tuning Charles Manning 2012-07-22 Yaffs has many options for tuning for speed or memory use. This document details them for Yaffs Direct and Linux, covering compile time flags and settings, initialisation
More informationGraphical Presentation of Data
Graphical Presentation of Data Dr Steve Woodhead Supporting your argument Introducing Matlab Graph plotting in Matlab Matlab demonstrations Lecture Overview Lab two The assignment part two Next week Lecture
More informationCSE 303 Concepts and Tools for Software Development. Magdalena Balazinska Winter 2010 Lecture 27 Final Exam Revision
CSE 303 Concepts and Tools for Software Development Magdalena Balazinska Winter 2010 Lecture 27 Final Exam Revision Today Final review session! The final is not yet written, but you know roughly what it
More informationChapter 1 INTRODUCTION SYS-ED/ COMPUTER EDUCATION TECHNIQUES, INC.
hapter 1 INTRODUTION SYS-ED/ OMPUTER EDUATION TEHNIQUES, IN. Objectives You will learn: Java features. Java and its associated components. Features of a Java application and applet. Java data types. Java
More informationReviewing gcc, make, gdb, and Linux Editors 1
Reviewing gcc, make, gdb, and Linux Editors 1 Colin Gordon csgordon@cs.washington.edu University of Washington CSE333 Section 1, 3/31/11 1 Lots of material borrowed from 351/303 slides Colin Gordon (University
More informationToday. Operating System Evolution. CSCI 4061 Introduction to Operating Systems. Gen 1: Mono-programming ( ) OS Evolution Unix Overview
Today CSCI 4061 Introduction to s Instructor: Abhishek Chandra OS Evolution Unix Overview Unix Structure Shells and Utilities Calls and APIs 2 Evolution How did the OS evolve? Generation 1: Mono-programming
More informationProgramming in C S c o t t S c h r e m m e r
Programming in C S c o t t S c h r e m m e r Outline Introduction Data Types and structures Pointers, arrays and dynamic memory allocation Functions and prototypes input/output comparisons compiling/makefiles/debugging
More informationHardware OS & OS- Application interface
CS 4410 Operating Systems Hardware OS & OS- Application interface Summer 2013 Cornell University 1 Today How my device becomes useful for the user? HW-OS interface Device controller Device driver Interrupts
More informationMultithreaded Programming
Multithreaded Programming The slides do not contain all the information and cannot be treated as a study material for Operating System. Please refer the text book for exams. September 4, 2014 Topics Overview
More informationCS Programming In C
CS 24000 - Programming In C Week 16: Review Zhiyuan Li Department of Computer Science Purdue University, USA This has been quite a journey Congratulation to all students who have worked hard in honest
More informationxtc Robert Grimm Making C Safely Extensible New York University
xtc Making C Safely Extensible Robert Grimm New York University The Problem Complexity of modern systems is staggering Increasingly, a seamless, global computing environment System builders continue to
More informationHigh Performance Computing and Programming, Lecture 3
High Performance Computing and Programming, Lecture 3 Memory usage and some other things Ali Dorostkar Division of Scientific Computing, Department of Information Technology, Uppsala University, Sweden
More informationns-3 Training Session 4: Monday 3:30pm ns-3 Annual Meeting May 2014
ns-3 Training Session 4: Monday 3:30pm ns-3 Annual Meeting 1 Writing and debugging your own examples NS-3 Annual Meeting 2 Writing and debugging new programs Choosing between Python and C++ Reading existing
More informationCS631 - Advanced Programming in the UNIX Environment. UNIX development tools
CS631 - Advanced Programming in the UNIX Environment Slide 1 CS631 - Advanced Programming in the UNIX Environment UNIX development tools Department of Computer Science Stevens Institute of Technology Jan
More informationOperating Systems 2 nd semester 2016/2017. Chapter 4: Threads
Operating Systems 2 nd semester 2016/2017 Chapter 4: Threads Mohamed B. Abubaker Palestine Technical College Deir El-Balah Note: Adapted from the resources of textbox Operating System Concepts, 9 th edition
More informationComLinC User Manual. Kefei Lu
ComLinC User Manual Kefei Lu December 3, 2007 Contents 1 Introduction to ComLinC 1 1.1 Licensing............................... 1 1.2 Getting Started............................ 1 1.2.1 Prerequists..........................
More informationToday. Operating System Evolution. CSCI 4061 Introduction to Operating Systems. Gen 1: Mono-programming ( ) OS Evolution Unix Overview
Today CSCI 4061 Introduction to s Instructor: Abhishek Chandra OS Evolution Unix Overview Unix Structure Shells and Utilities Calls and APIs 2 Evolution How did the OS evolve? Dependent on hardware and
More informationQuiz on Tuesday April 13. CS 361 Concurrent programming Drexel University Fall 2004 Lecture 4. Java facts and questions. Things to try in Java
CS 361 Concurrent programming Drexel University Fall 2004 Lecture 4 Bruce Char and Vera Zaychik. All rights reserved by the author. Permission is given to students enrolled in CS361 Fall 2004 to reproduce
More informationSpecial Topics: Programming Languages
Lecture #23 0 V22.0490.001 Special Topics: Programming Languages B. Mishra New York University. Lecture # 23 Lecture #23 1 Slide 1 Java: History Spring 1990 April 1991: Naughton, Gosling and Sheridan (
More informationChapter 2 Operating-System Structures
This chapter will discuss the following concepts: 2.1 Operating System Services 2.2 User Operating System Interface 2.3 System Calls 2.4 System Programs 2.5 Operating System Design and Implementation 2.6
More informationCreating a system call in Linux. Tushar B. Kute,
Creating a system call in Linux Tushar B. Kute, http://tusharkute.com x86 Protection Rings Privileged instructions Can be executed only When current privileged Level (CPL) is 0 Operating system kernel
More informationADMINISTRATIVE MANAGEMENT COLLEGE
First Semester ADMINISTRATIVE MANAGEMENT COLLEGE BACHELOR OF COMPUTER APPLICATION COURSE OUTCOME (CO) Problem solving techniques Using C CO 1: Understand the basic concepts of programming, software and
More informationChapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc.
Chapter 1 GETTING STARTED SYS-ED/ Computer Education Techniques, Inc. Objectives You will learn: Java platform. Applets and applications. Java programming language: facilities and foundation. Memory management
More informationComputer Science 322 Operating Systems Mount Holyoke College Spring Topic Notes: C and Unix Overview
Computer Science 322 Operating Systems Mount Holyoke College Spring 2010 Topic Notes: C and Unix Overview This course is about operating systems, but since most of our upcoming programming is in C on a
More informationPractical Programming Methodology
General Course Information Practical Programming Methodology (CMPUT-2) Lecture Michael Buro Introduction to the course Computer architecture Section home page: www.cs.ualberta.ca/ mburo/courses/2 news,
More informationCS 326 Operating Systems C Programming. Greg Benson Department of Computer Science University of San Francisco
CS 326 Operating Systems C Programming Greg Benson Department of Computer Science University of San Francisco Why C? Fast (good optimizing compilers) Not too high-level (Java, Python, Lisp) Not too low-level
More informationWelcome to CSE131b: Compiler Construction
Welcome to CSE131b: Compiler Construction Lingjia Tang pic from: http://xkcd.com/303/ Course Information What are compilers? Why do we learn about them? History of compilers Structure of compilers A bit
More informationBASICS OF THE RENESAS SYNERGY TM
BASICS OF THE RENESAS SYNERGY TM PLATFORM Richard Oed 2018.11 02 CHAPTER 8 HELLO WORLD! HELLO BLINKY! CONTENTS 8 HELLO WORLD! HELLO BLINKY! 03 8.1 Your First Project Using e 2 studio 04 8.1.1 Creating
More informationExercise Session 6 Computer Architecture and Systems Programming
Systems Group Department of Computer Science ETH Zürich Exercise Session 6 Computer Architecture and Systems Programming Herbstsemester 2016 Agenda GDB Outlook on assignment 6 GDB The GNU Debugger 3 Debugging..
More informationChapter 4: Threads. Chapter 4: Threads
Chapter 4: Threads Silberschatz, Galvin and Gagne 2013 Chapter 4: Threads Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues Operating System Examples
More informationLaboratorio di Tecnologie dell'informazione
Laboratorio di Tecnologie dell'informazione Ing. Marco Bertini marco.bertini@unifi.it http://www.micc.unifi.it/bertini/ Building a Hello world with Eclipse When debugging, novices insert corrective code;
More informationThe CS-220 Development Environment
The Development Environment (No relevant sections in text) Picking the right tool for the job 2 Integrated Development Environment 3 Command Line Mentality Old fashioned but surprisingly efficient (except
More informationOpenACC Course. Office Hour #2 Q&A
OpenACC Course Office Hour #2 Q&A Q1: How many threads does each GPU core have? A: GPU cores execute arithmetic instructions. Each core can execute one single precision floating point instruction per cycle
More informationLecture Topics. Administrivia
ECE498SL Lec. Notes L8PA Lecture Topics overloading pitfalls of overloading & conversions matching an overloaded call miscellany new & delete variable declarations extensibility: philosophy vs. reality
More informationLectures 5-6: Introduction to C
Lectures 5-6: Introduction to C Motivation: C is both a high and a low-level language Very useful for systems programming Faster than Java This intro assumes knowledge of Java Focus is on differences Most
More informationSlide Set 5. for ENCM 339 Fall Steve Norman, PhD, PEng. Electrical & Computer Engineering Schulich School of Engineering University of Calgary
Slide Set 5 for ENCM 339 Fall 2016 Steve Norman, PhD, PEng Electrical & Computer Engineering Schulich School of Engineering University of Calgary October 2016 ENCM 339 Fall 2016 Slide Set 5 slide 2/32
More informationPerformance Evaluation of ISO C restrict on the Power Architecture
MASTER S THESIS LUND UNIVERSITY 2015 Performance Evaluation of ISO C restrict on the Power Architecture Anton Botvalde, Andreas Larsson Department of Computer Science Faculty of Engineering LTH ISSN 1650-2884
More informationThe ICE Language and Compiler: Manual and Tutorial. By: Fady Ghanim, Uzi Vishkin, and Rajeev Barua
The ICE Language and Compiler: Manual and Tutorial By: Fady Ghanim, Uzi Vishkin, and Rajeev Barua 1 Contents 1. Introduction... 3 1.1 The purpose of this manual... 4 2. The ICE Language... 5 2.1 New ICE
More informationLecture 1: Overview of Java
Lecture 1: Overview of Java What is java? Developed by Sun Microsystems (James Gosling) A general-purpose object-oriented language Based on C/C++ Designed for easy Web/Internet applications Widespread
More informationEL2310 Scientific Programming
Lecture 11: Structures and Memory (yaseminb@kth.se) Overview Overview Lecture 11: Structures and Memory Structures Continued Memory Allocation Lecture 11: Structures and Memory Structures Continued Memory
More informationChapter 2: Operating-System Structures
Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures Operating System Services User Operating System Interface System Calls Types of System Calls System Programs Operating System
More informationOutline Background Jaluna-1 Presentation Jaluna-2 Presentation Overview Use Cases Architecture Features Copyright Jaluna SA. All rights reserved
C5 Micro-Kernel: Real-Time Services for Embedded and Linux Systems Copyright 2003- Jaluna SA. All rights reserved. JL/TR-03-31.0.1 1 Outline Background Jaluna-1 Presentation Jaluna-2 Presentation Overview
More informationCHAPTER 2: SYSTEM STRUCTURES. By I-Chen Lin Textbook: Operating System Concepts 9th Ed.
CHAPTER 2: SYSTEM STRUCTURES By I-Chen Lin Textbook: Operating System Concepts 9th Ed. Chapter 2: System Structures Operating System Services User Operating System Interface System Calls Types of System
More informationComputer Science 2500 Computer Organization Rensselaer Polytechnic Institute Spring Topic Notes: C and Unix Overview
Computer Science 2500 Computer Organization Rensselaer Polytechnic Institute Spring 2009 Topic Notes: C and Unix Overview This course is about computer organization, but since most of our programming is
More informationChapter 4: Multithreaded
Chapter 4: Multithreaded Programming Chapter 4: Multithreaded Programming Overview Multithreading Models Thread Libraries Threading Issues Operating-System Examples 2009/10/19 2 4.1 Overview A thread is
More informationLecture 3: Instruction Set Architecture
Lecture 3: Instruction Set Architecture CSE 30: Computer Organization and Systems Programming Summer 2014 Diba Mirza Dept. of Computer Science and Engineering University of California, San Diego 1. Steps
More informationContinue: How do I learn C? C Primer Continued (Makefiles, debugging, and more ) Last Time: A Simple(st) C Program 1-hello-world.c!
Continue: How do I learn C? C Primer Continued (Makefiles, debugging, and more ) Hello Word! ~/ctest/ In addition to syntax you need to learn: the Tools the Libraries. And the Documentation. Maria Hybinette,
More informationCSC209: Software tools. Unix files and directories permissions utilities/commands Shell programming quoting wild cards files
CSC209 Review CSC209: Software tools Unix files and directories permissions utilities/commands Shell programming quoting wild cards files ... and systems programming C basic syntax functions arrays structs
More informationCSC209: Software tools. Unix files and directories permissions utilities/commands Shell programming quoting wild cards files. Compiler vs.
CSC209 Review CSC209: Software tools Unix files and directories permissions utilities/commands Shell programming quoting wild cards files... and systems programming C basic syntax functions arrays structs
More informationIntroducing LLDB for Linux on Arm and AArch64. Omair Javaid
Introducing LLDB for Linux on Arm and AArch64 Omair Javaid Agenda ENGINEERS AND DEVICES WORKING TOGETHER Brief introduction and history behind LLDB Status of LLDB on Linux and Android Linaro s contributions
More informationHello, World! in C. Johann Myrkraverk Oskarsson October 23, The Quintessential Example Program 1. I Printing Text 2. II The Main Function 3
Hello, World! in C Johann Myrkraverk Oskarsson October 23, 2018 Contents 1 The Quintessential Example Program 1 I Printing Text 2 II The Main Function 3 III The Header Files 4 IV Compiling and Running
More informationConcurrent Programming
Concurrent Programming Real-Time Systems, Lecture 2 Martina Maggio 19 January 2017 Lund University, Department of Automatic Control www.control.lth.se/course/frtn01 Content [Real-Time Control System: Chapter
More informationProgramming Studio #9 ECE 190
Programming Studio #9 ECE 190 Programming Studio #9 Concepts: Functions review 2D Arrays GDB Announcements EXAM 3 CONFLICT REQUESTS, ON COMPASS, DUE THIS MONDAY 5PM. NO EXTENSIONS, NO EXCEPTIONS. Functions
More informationOperating Systems. Designed and Presented by Dr. Ayman Elshenawy Elsefy
Operating Systems Designed and Presented by Dr. Ayman Elshenawy Elsefy Dept. of Systems & Computer Eng.. AL-AZHAR University Website : eaymanelshenawy.wordpress.com Email : eaymanelshenawy@yahoo.com Reference
More informationA tale of ELFs and DWARFs
A tale of ELFs and DWARFs A glimpse into the world of linkers, loaders and binary formats Volker Krause vkrause@kde.org @VolkerKrause Our Workflow Write code Run compiler... Run application Profit! Why
More informationChapter 4: Threads. Operating System Concepts 9 th Edition
Chapter 4: Threads Silberschatz, Galvin and Gagne 2013 Chapter 4: Threads Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues Operating System Examples
More informationChapter 4: Threads. Chapter 4: Threads
Chapter 4: Threads Silberschatz, Galvin and Gagne 2009 Chapter 4: Threads Overview Multithreading Models Thread Libraries Threading Issues Operating System Examples Windows XP Threads Linux Threads 4.2
More information