SlideShare uma empresa Scribd logo
1 de 55
Trends in Programming Technology
you might want to keep an eye on

              Bent Thomsen

              bt@cs.aau.dk
      Department of Computer Science
            Aalborg University

                                   1
2
Source: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
3
Source: http://langpop.com
Source: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
                                                           4
October 2009
Conclusions
• Nothing has changed much
• Main languages have their domain
   –   Java – for web applications
   –   C – for system programming
   –   (Visual) Basic – for desktop windows apps
   –   PHP for serverside scripting
   –   C++ when Java is (perceived) too slow
• We can go home now

• Wait a minute!
• Something is changing
   – Software is getting more and more complex
   – Hardware has changed

                                                   5
Web-based applications today
          Presentation: HTML, CSS, Javascript, Flash,
          Java applets, ActiveX controls, Silverlight
                                  Application server
                                  Web server
                                  Content management
                                  system

           Business logic: C#, Java, VB, PHP, Perl,
           Python,Ruby …
                        Beans, servlets, CGI, ASP.NET,…
                                   Operating System

            Database: SQL            Sockets, HTTP, email,
                                     SMS, XML, SOAP,
            File system
                                     REST, Rails, reliable
          Replication, distribution, messaging, AJAX, …
          load-balancing, security,    6
          concurrency
The Hardware world is changing!




                         7
Moore’s Law
• Popular belief:
  – Moore’s Law stopped working in 2005!
• Moore’s Law (misinterpreted):
  – The processor speed doubles every 18 months
• Moore’s Law still going strong
  – the number of transistors per unit area on a chip
    doubles every 18 months
• Instead of using more and more HW real-estate
  on cache memory it is now used for multiple
  cores

                                            8
The IT industry wakeup call
• The super computing community
  discovered the change in hardware first
• The rest of the computing industry are in
  for an eye-opener soon!
• Some have started to worry
“Multicore: This is the one which will have the biggest impact on us.
We have never had a problem to solve like this.
A breakthrough is needed in how applications are done on multicore devices.”
– Bill Gates



                                                         9
A programmer’s view of memory




 This model was pretty accurate in 1985.
 Processors (386, ARM, MIPS, SPARC) all ran at 1–10MHz clock
 speed and could access external memory in 1 cycle; and most
 instructions took 1 cycle.
 Indeed the C language was as expressively time-accurate as a
 language could be: almost all C operators took one or two cycles.
 But this model is no longer accurate!


                                                          10
A modern view of memory timings




So what happened?
On-chip computation (clock-speed) sped up
faster (1985–2005) than off-chip communication (with memory) as feature
sizes shrank.
The gap was filled by spending transistor budget on caches which
(statistically) filled the mismatch until 2005 or so.
Techniques like caches, deep pipelining with bypasses, and
superscalar instruction issue burned power to preserve our illusions.
2005 or so was crunch point as faster, hotter, single-CPU Pentiums
were scrapped. These techniques had delayed the inevitable.
                                                        11
The Current Mainstream Processor




Will scale to 2, 4 maybe 8 processors.
But ultimately shared memory becomes the bottleneck (1024 processors?!?).
                                                       12
Programming model(s) reflecting
    the new world are called for
• Algorithm should do most work on local data !!
• Programmers need to
  – know what is local and what is not
  – need to deal with communication
  – make decisions on parallel execution
• But how can the poor programmer ensure this?
• She/he has to exploit:
  – Data Parallelism
  – Task parallelism
• She/he needs programming language constructs
                                  13
  to help her/him
Which languages are discussed?




                             14
Source: http://langpop.com
15
Source: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Three Trends
• Declarative programming languages in
  vogue again
  – Especially functional
• Dynamic Programming languages are
  gaining momentum
• Concurrent Programming languages are
  back on the agenda


                               16
Declarative Programming
• Lots of talk about declarative languages:
  – Haskell
  – Scheme, Lisp, Clojure
  – F#, O’Caml, SML
  – Scala, Fortress
• Lots of talk about declarative constructs in
  traditional languages
  – C#

                                   17
What do we mean by
           declarative/functional?
• Say what you want, without saying how
    – Not quite true – more a question of saying how
      implicitly
•   Functions as first class entities
•   Lazy or(/and) eager evaluation
•   Pure vs. impure
•   Value oriented (vs. state oriented)
•   Pattern matching
•   Generics (or parametric polymorphism)
                                             18
Mainstream programming is going
          declarative
  Four years ago Anders Heilsberg (designer of C#) said:

   ``Generally speaking, it's interesting to think about more
   declarative styles of programming vs. imperative styles. ...
   Functional programming languages and queries are actually
   a more declarative style of programming''.

   ``programmers have to unlearn .. and to learn to trust that
   when they're just stating the ``what''
   The machine is smart enough to do the ``how'' the way they
   want it done, or the most efficient way''. - Anders Hejlsberg




                                                       19
Name the language...
                                                         C# 3.0
• Quicksort revisited
            parameterized type of functions
      Func<intlist, intlist> Sort =
       xs =>                              higher-order function
        xs.Case(                                              lambda expression
           () => xs,
           (head,tail) => (Sort(tail.Where(x => x < head)))
                             .Concat
                           (Single(head))                       append
     type inference          .Concat
                           (Sort(tail.Where(x => x >= head)))
        );

                                                                 filter
                        recursion

                                                              20
C# 3.0 Language Extensions
                                                   Query
                 var contacts =                expressions
                   from c in customers
                   where c.State == "WA"
Local variable     select new { c.Name, c.Phone };
type inference

                                    Lambda
                                  expressions
                 var contacts =
                   customers
                   .Where(c => c.State == "WA")
                   .Select(c => new { c.Name, c.Phone });
Extension
methods             Anonymous                        Object
                      types                        initializers
                                                  21
C# 3.0 Features
–   Implicitly Typed Local Variables
–   Lambda Expressions
–   Anonymous Types
–   Expression Trees
–   Query Expressions
–   Extension Methods
–   Object Initializers
–   Collection Initializers
–   Iterators
–   Lazy streams
–   Nullable value types

– C# 2.0 already have:
     • Generics
     • Structured Value Types
     • First class anonymous functions (called delegates)
                                                       22
F#
• A .NET language (developed by Don Syme)
   – Connects with all Microsoft foundation technologies
   – 3rd official MS language shipped with VS2010


• Aims to combine the best of Lisp, ML, Scheme, Haskell,
  in the context of .NET
   – Actually based on O’Caml

• Functional, math-oriented, scalable

• Aimed particularly at the "Symbolic Programming" niche
  at Microsoft
                                                    23
F# on one slide
    NOTE: type inferred
        •   let data = (1,2,3)
                                                          val data: int * int * int

        •   let sqr x = x * x
                                                              val sqr: int -> int

        •   let f (x,y,z) = (sqr x, sqr y, sqr z)                  NOTE: parentheses
                                                                      optional on
        •   let sx,sy,sz = f (10,20,30)                               application
NOTE: •     print "hello world"; 1+2
                                                                NOTE: sequencing
pattern
matching•   let show x y z =
        •       printf "x = %d y = %d y = %d n" x y z;
        •       let sqrs= f (x,y,z) in
        •       print "Hello worldn";
        •       sqrs                                            NOTE: local binding,
                                                                 sequencing, return
        •   let (|>) x f = f x

                                                               NOTE: pipelining
                                                                 operator
                                                                  24
Beyond Java
"A Conversation With Guy Steele Jr."
Dr. Dobb's Journal (04/05) Vol. 30, No. 4, P. 17; Woehr, Jack J.

Guy Steele theorizes that programming languages are
finite, and argues that the time is right for a successor
to Java, which has another two decades of life left. Sun
is investigating whether aligning programming
languages more closely to traditional mathematical
notation can reduce the burden for scientific
programmers
                  Guy Steele co-wrote the original Java specifications and in
                  1996 was awarded the ACM SIGPLAN Programming
                  Language Achievement Award. Steele is a distinguished
                  engineer and principal investigator at Sun Microsystems
                  Laboratories, where he heads the company's25  Programming
                  Language Research Group.
Fortress
• One of the three languages DARPA spent 1BN$ on
     – Actually SUN only got 49.7M$ (IBM and CRAY got the rest)

•   First class higher order functions
•   Type inference
•   immutable and mutable variables
•   Traits
     – Like Java interfaces with code, classes without fields
• Objects
     – Consist of fields and methods
• Designed to be parallel unless explicit sequential
     – For loops and generators, tuples
     – Transactional Memory
     – PGAS (Partitioned Global Address Space)
• Runs on top of the JVM

                                                                26
“Advances” in Syntax
• Extensible syntax – follows Guy Stell’s vision of
  “Growing a language”
  – The only language I know with overloadable whitespace!
  – Syntax based on Parsing Expression Grammars (PEG)


• Syntax resembling mathematical notation




                                           27
Scala
• Scala is an object-oriented and functional language which is
  completely interoperable with Java
    – Developed by Martin Odersky, EPFL, Lausanne, Switzerland

• Uniform object model
    –   Everything is an object
    –   Class based, single inheritance
    –   Mixins and traits
    –   Singleton objects defined directly
• Higher Order and Anonymous functions with Pattern matching
• Genericity
• Extendible
    – All operators are overloadable, function symbols can be pre-, post- or
      infix
    – new control structures can be defined without using macros

                                                           28
Scala is Object Oriented
                                                         object instead of
                                                       var: Type instead of Type var
                                                         static members
Scala programs
interoperate seamlessly                  object Example1 {
with Java class libraries:                   def main(args: Array[String]) {
 –   Method calls
 –   Field accesses                               val b = new StringBuilder()
 –   Class inheritance                            for (i ← 0 until args.length) {
 –   Interface implementation                         if (i > 0) b.append(" ")
all work as in Java.                                  b.append(args(i).toUpperCase)
Scala programs compile to                         }
JVM bytecodes.
                                                  Console.println(b.toString)
Scala’s syntax resembles                     }
Java’s, but there are also               }
some differences.
          Scala’s version of the
                extended for loop                  Arrays are indexed
            (use <- as an alias for ←)           args(i) instead of args[i]
                                                                  29
Scala is functional sequences
                        Arrays are instancesArray which
                         map is a method of of
                                   with map and mkString methods.
                                   applies the function on its right
                                        to each array element.
The last program can                object Example2 {
also                                  def main(args: Array[String]) {
be written in a                          println(args
                                                 map (_.toUpperCase)
completely                                       mkString " ")
different style:                      }
                                    }
– Treat arrays as instances
  of general sequence
  abstractions.                            A closure which applies the
                          mkString is a method of Array which to its
                                            toUpperCase method
– Use higher-order        forms a string of all elementsargument
                                                   String with a
  functions instead of      given separator between them.
  loops.
                                                       30
Scala’s approach
• Scala applies Tennent’s design principles:
  – concentrate on abstraction and composition
    capabilities instead of basic language
    constructs
  – Minimal orthogonal set of core language
    constructs


• But it is European 

                                    31
Clojure
• Concurrent Lisp like language on JVM
  – Developed by Rich Hickey
• Everything is an expression, except:
  – Symbols
  – Operations (op ...)
  – Special operations:
     • def if fn let loop recur do new . throw try set! quote var
• Code is expressed in data structures
• Functions are first-class values
• Clojure is homoiconic

                                                      32
Java vs. Clojure




                   33
Dynamic Programming
• Lots of talk about dynamic languages
  –   PhP, Perl, Ruby
  –   JavaScript
  –   Lisp/Scheme
  –   Erlang
  –   Groovy
  –   Clojure
  –   Python
       • jPython for JVM and IronPyhon for .Net


• Real-programmers don’t need types
                                                  34
35
36
Dynamic Language characteristics
• (Perceived) to be less verbose
     – Comes with good libraries/frameworks


•   Interpreted or JIT to bytecode
•   Eval: string -> code
•   REPL style programming
•   Embeddable in larger applications as scripting language

• Supports Higher Order Function!
• Object oriented
     – JavaScript, Ruby and Python
     – Based on Self resp. SmallTalk
• Meta Programming made easier
                                              37
Dynamic Programming in C# 4.0
– Dynamic Lookup
  • A new static type called: dynamic
  • No static typing of operations with dynamic
  • Exceptions on invalid usage at runtime
        dynamic d = GetDynamicObject(…);
        d.M(7); // calling methods
        d.f= d.P; // getting and settings fields and properties
        d[“one”] = d[“two”]; // getting and setting thorughindexers
        Int i= d + 3; // calling operators
        string s = d(5,7); // invoking as a delegate

– Optional and Named Parameters
– COM interop features
– (Co-and Contra-variance)                           38
Concurrent Programming
• Lots of talk about Erlang

• Fortress, X10 and Chapel

• Java.util.concurrency
• Actors in Scala
• Clojure

• C omega
• F# - Accelerator on GPU
• .Net Parallel Extensions
                              39
The problem with Threads
• Threads
  –   Program counter
  –   Own stack
  –   Shared Memory
  –   Create, start (stop), yield ..
• Locks
  – Wait, notify, notifyall
  – manually lock and unlock
       • or implicit via synchronized
  – lock ordering is a big problem

  – Not compositional
                                        40
Several directions
• (Software) Transactional Memory
  – Enclose code in begin/end blocks or atomic
    blocks
  – Variations
    • specify manual abort/retry
    • specify an alternate path (way of controlling
      manual abort)
  – Java STM2 library
  – Clojure, Fortress, X10, Chapel

                                            41
Message Passing/Actors

– Erlang
– Scala Actors
– F#/Axum




                     42
Theoretical Models
•   Actors
•   CSP
•   CCS
•   pi-calculus
•   join-calculus

• All tried and tested in many languages
  over the years, but …

                                 43
Problems with Actor like models
• Actors (Agents, Process or Threads) are not free
• Message sending is not free
• Context switching is not free
• Still need Lock acquire/release at some level
  and it is not free
• Multiple actor coordination
    – reinvent transactions?
    – Actors can still deadlock and starve
    – Programmer defines granularity by choosing what is
      an actor

                                            44
Other concurrency models
• Dataflow
   – Stream Processing Functions
• Futures
• Tuple Spaces

• Stop gap solutions based on parallelised
  libraries

• Lots of R&D (again) in this area!!!
                                        45
Other trends worth watching
•   Development methods
     –   Away from waterfall, top-down
     –   Towards agile/XP/Scrum
     –   Refactoring
     –   Frameworks, Patterns
     –   test-driven-development
•   Tools
     – Powerful IDEs with plug-ins
     – Frameworks
     – VM and OS integrations
            • MS PowerShell, v8 in Android


•   Programming Language construction is becoming easier
     –   Extendible Open (source) Compilers for most mainstream languages
     –   AST (or expression trees in C#/F# and Fortress)
     –   Generic code generators
     –   Parsing Expression Grammars (PEG)


                                                                46
Implications for real-time
• New ways of programming is back on the
  agenda

• But ..
   – C as popular as ever!!
   – ADA is still around
      • No. 10 in list of languages talked about
      • No. 20 on skills in jobs advertised
   – Java still most popularity (albeit declining a little)
      • The only modern language serious about hard-real time!

                                                   47
What about all the new declarative
       and dynamic stuff?
• Higher Order Programming
  – Elegant programming styles
  – Harder to analyse control flow
  – Usually imply use of GC
• Dynamic Programming
  – Lots of run-time checks
  – Harder to analyse type violations
• Frameworks written for average-time
  performance, not worst case analysis
• VM technology is improving a lot
  – But special VMs are needed for RT

                                        48
Promises for real-time
• New ways of programming is back on the agenda
• Understanding of HW has (again) become necessary
• Semantics is back on the agenda
   – SOS/Calculi for Fortress, Scala, F#
   – Advanced type systems and type inference
• Program Analysis and verification
   –   JML and SPEC# (Design by contract)
   –   SPIN, Blast, UPPAAL
   –   ProVerif (Microsoft)
   –   JavaPathfinder (NASA, Fujitsu)
   –   WALA (IBM) osv.



                                                49
So how would you like to
programme in 20 years?




                   50
How would you like to program in 20 years?

• Research project (codename P2025)
  – Reviewing the state-of-the-art
  – Experimenting with advanced programming
     • Functional and OO integration
     • Programmatic Program Construction
  – Developing a new programming language
• ”The P-gang”:
     •   Kurt Nørmark
     •   Lone Leth
     •   Bent Thomsen
     •   Simon Kongshøj
     •   (Petur Olsen og Thomas Bøgholm)
     •   (Thomas Vestdam)
                                           51
Approach

• Basic Research (Grundforskning) – someone has to do it
  …
• We want to influence the next generation of mainstream
  programming languages
• Integration playground for new language ideas
• Constructive: design and implement
   – languages and compilers
   – Experimental systems
• Openness and open source
• Umbrella covering the research work of the group in
  coming years
   – Research, Master Thesis (speciale), DAT7/8 and PhD

                                                 52
• Several Master Student projects already done
Bent Thomsen
•   MSc. (Cand. Scient) in CS and maths, AAU, 1981-1987
     – Modal transition systems
•   PhD Computing, Imperial College, 1987-1990
     – Calculus of Higher Order Concurrent systems
•   European Computer Manufacturers Research Centre, Munich, 1990-1996
     – Facile programming language
     – Calumet teleconferencing
     – Mobile service Agents
•   ICL (now Fujitsu), 1996-2002
     – Agent programming
     – Mobile Enabling ICL
•   AAU, DPT, 2002-(2025??)
     –   Programming
     –   Compiler construction and language design
     –   Mobile Software Technologies
     –   Super Computer Programming
     –   Hard-real time programming in Java
     –   Indoor location based systems
     –   P2025
                                                                         53
Some of my Background Knowledge

Mapping and Visiting in Functional and Object Oriented Programming
Kurt Nørmark, Bent Thomsen, and Lone Leth Thomsen
JOT: Journal of Object Technology
http://www.jot.fm/issues/issue_2008_09/article2/index.html

Computational Abstraction Steps
Kurt Nørmark, Bent Thomsen, and Lone Leth Thomsen
Submitted for publication in JOT: Journal of Object Technology

Towards Transactional Memory for Real-Time Systems.
Martin Schoberl, Bent Thomsen and Lone Leth Thomsen
Technical report. 09-001 Department of Computer Science, AAU, 2009



                                                           54
Some of my Background Knowledge
“Towards Global Computations Guided by Concurrency Theory”,
Bent Thomsen and Lone Leth,
in Chapter 4, in Current Trends in Theoretical Computer Science,
Entering the 21st century, G. Paun, G. Rozenberg and A. Salomaa (Editors),
World Scientific Publishing, 2001.

“Programming Languages, Analysis Tools and Concurrency Theory”,
Bent Thomsen,
ACM Computing Surveys 28A(4), December 1996.
(http://www.acm.org/pubs/articles/journals/surveys/1996-28-4es/a57-
      thomsen/a57-thomsen.html)

“FACILE - from Toy to Tool”,
Bent Thomsen, Lone Leth and Tsung-Min Kuo,
Chapter 5 in ML with Concurrency: Design, Analysis, Implementation, and
    Application,
Flemming Nielson (Editor), Springer- Verlag, 1996.
                                                          55

Mais conteúdo relacionado

Mais procurados

Performance tuning and optimization (ppt)
Performance tuning and optimization (ppt)Performance tuning and optimization (ppt)
Performance tuning and optimization (ppt)Harish Chand
 
Spark Performance Tuning .pdf
Spark Performance Tuning .pdfSpark Performance Tuning .pdf
Spark Performance Tuning .pdfAmit Raj
 
Dremel: Interactive Analysis of Web-Scale Datasets
Dremel: Interactive Analysis of Web-Scale Datasets Dremel: Interactive Analysis of Web-Scale Datasets
Dremel: Interactive Analysis of Web-Scale Datasets robertlz
 
Real time big data stream processing
Real time big data stream processing Real time big data stream processing
Real time big data stream processing Luay AL-Assadi
 
Designing Structured Streaming Pipelines—How to Architect Things Right
Designing Structured Streaming Pipelines—How to Architect Things RightDesigning Structured Streaming Pipelines—How to Architect Things Right
Designing Structured Streaming Pipelines—How to Architect Things RightDatabricks
 
Apache Spark Core—Deep Dive—Proper Optimization
Apache Spark Core—Deep Dive—Proper OptimizationApache Spark Core—Deep Dive—Proper Optimization
Apache Spark Core—Deep Dive—Proper OptimizationDatabricks
 
Hudi: Large-Scale, Near Real-Time Pipelines at Uber with Nishith Agarwal and ...
Hudi: Large-Scale, Near Real-Time Pipelines at Uber with Nishith Agarwal and ...Hudi: Large-Scale, Near Real-Time Pipelines at Uber with Nishith Agarwal and ...
Hudi: Large-Scale, Near Real-Time Pipelines at Uber with Nishith Agarwal and ...Databricks
 
Processing Large Data with Apache Spark -- HasGeek
Processing Large Data with Apache Spark -- HasGeekProcessing Large Data with Apache Spark -- HasGeek
Processing Large Data with Apache Spark -- HasGeekVenkata Naga Ravi
 
Aula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de DadosAula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de DadosHenrique Nunweiler
 
Livre Blanc : comprendre les data-lakes
Livre Blanc : comprendre les data-lakesLivre Blanc : comprendre les data-lakes
Livre Blanc : comprendre les data-lakesConverteo
 
MongoDB Cheat Sheet – Quick Reference
MongoDB Cheat Sheet – Quick ReferenceMongoDB Cheat Sheet – Quick Reference
MongoDB Cheat Sheet – Quick ReferenceCésar Trigo
 
Spark Autotuning Talk - Strata New York
Spark Autotuning Talk - Strata New YorkSpark Autotuning Talk - Strata New York
Spark Autotuning Talk - Strata New YorkHolden Karau
 
Facebook Architecture - Breaking it Open
Facebook Architecture - Breaking it OpenFacebook Architecture - Breaking it Open
Facebook Architecture - Breaking it OpenHARMAN Services
 
Demystifying DataFrame and Dataset with Kazuaki Ishizaki
Demystifying DataFrame and Dataset with Kazuaki IshizakiDemystifying DataFrame and Dataset with Kazuaki Ishizaki
Demystifying DataFrame and Dataset with Kazuaki IshizakiDatabricks
 
Spark - Alexis Seigneurin (Français)
Spark - Alexis Seigneurin (Français)Spark - Alexis Seigneurin (Français)
Spark - Alexis Seigneurin (Français)Alexis Seigneurin
 
Spark overview
Spark overviewSpark overview
Spark overviewLisa Hua
 
Introduction to spark
Introduction to sparkIntroduction to spark
Introduction to sparkDuyhai Doan
 
The Key Role of Business Analysis in Project Success and Achieving Business V...
The Key Role of Business Analysis in Project Success and Achieving Business V...The Key Role of Business Analysis in Project Success and Achieving Business V...
The Key Role of Business Analysis in Project Success and Achieving Business V...Alan McSweeney
 

Mais procurados (20)

Performance tuning and optimization (ppt)
Performance tuning and optimization (ppt)Performance tuning and optimization (ppt)
Performance tuning and optimization (ppt)
 
Spark Performance Tuning .pdf
Spark Performance Tuning .pdfSpark Performance Tuning .pdf
Spark Performance Tuning .pdf
 
Presto: SQL-on-anything
Presto: SQL-on-anythingPresto: SQL-on-anything
Presto: SQL-on-anything
 
Dremel: Interactive Analysis of Web-Scale Datasets
Dremel: Interactive Analysis of Web-Scale Datasets Dremel: Interactive Analysis of Web-Scale Datasets
Dremel: Interactive Analysis of Web-Scale Datasets
 
Real time big data stream processing
Real time big data stream processing Real time big data stream processing
Real time big data stream processing
 
What is in your Business Analysis Toolkit?
What is in your Business Analysis Toolkit?What is in your Business Analysis Toolkit?
What is in your Business Analysis Toolkit?
 
Designing Structured Streaming Pipelines—How to Architect Things Right
Designing Structured Streaming Pipelines—How to Architect Things RightDesigning Structured Streaming Pipelines—How to Architect Things Right
Designing Structured Streaming Pipelines—How to Architect Things Right
 
Apache Spark Core—Deep Dive—Proper Optimization
Apache Spark Core—Deep Dive—Proper OptimizationApache Spark Core—Deep Dive—Proper Optimization
Apache Spark Core—Deep Dive—Proper Optimization
 
Hudi: Large-Scale, Near Real-Time Pipelines at Uber with Nishith Agarwal and ...
Hudi: Large-Scale, Near Real-Time Pipelines at Uber with Nishith Agarwal and ...Hudi: Large-Scale, Near Real-Time Pipelines at Uber with Nishith Agarwal and ...
Hudi: Large-Scale, Near Real-Time Pipelines at Uber with Nishith Agarwal and ...
 
Processing Large Data with Apache Spark -- HasGeek
Processing Large Data with Apache Spark -- HasGeekProcessing Large Data with Apache Spark -- HasGeek
Processing Large Data with Apache Spark -- HasGeek
 
Aula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de DadosAula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de Dados
 
Livre Blanc : comprendre les data-lakes
Livre Blanc : comprendre les data-lakesLivre Blanc : comprendre les data-lakes
Livre Blanc : comprendre les data-lakes
 
MongoDB Cheat Sheet – Quick Reference
MongoDB Cheat Sheet – Quick ReferenceMongoDB Cheat Sheet – Quick Reference
MongoDB Cheat Sheet – Quick Reference
 
Spark Autotuning Talk - Strata New York
Spark Autotuning Talk - Strata New YorkSpark Autotuning Talk - Strata New York
Spark Autotuning Talk - Strata New York
 
Facebook Architecture - Breaking it Open
Facebook Architecture - Breaking it OpenFacebook Architecture - Breaking it Open
Facebook Architecture - Breaking it Open
 
Demystifying DataFrame and Dataset with Kazuaki Ishizaki
Demystifying DataFrame and Dataset with Kazuaki IshizakiDemystifying DataFrame and Dataset with Kazuaki Ishizaki
Demystifying DataFrame and Dataset with Kazuaki Ishizaki
 
Spark - Alexis Seigneurin (Français)
Spark - Alexis Seigneurin (Français)Spark - Alexis Seigneurin (Français)
Spark - Alexis Seigneurin (Français)
 
Spark overview
Spark overviewSpark overview
Spark overview
 
Introduction to spark
Introduction to sparkIntroduction to spark
Introduction to spark
 
The Key Role of Business Analysis in Project Success and Achieving Business V...
The Key Role of Business Analysis in Project Success and Achieving Business V...The Key Role of Business Analysis in Project Success and Achieving Business V...
The Key Role of Business Analysis in Project Success and Achieving Business V...
 

Semelhante a Trends in Programming Technology you might want to keep an eye on af Bent Thomsen, AAU

Are High Level Programming Languages for Multicore and Safety Critical Conver...
Are High Level Programming Languages for Multicore and Safety Critical Conver...Are High Level Programming Languages for Multicore and Safety Critical Conver...
Are High Level Programming Languages for Multicore and Safety Critical Conver...InfinIT - Innovationsnetværket for it
 
Floating Point Operations , Memory Chip Organization , Serial Bus Architectur...
Floating Point Operations , Memory Chip Organization , Serial Bus Architectur...Floating Point Operations , Memory Chip Organization , Serial Bus Architectur...
Floating Point Operations , Memory Chip Organization , Serial Bus Architectur...KRamasamy2
 
Floating Point Operations , Memory Chip Organization , Serial Bus Architectur...
Floating Point Operations , Memory Chip Organization , Serial Bus Architectur...Floating Point Operations , Memory Chip Organization , Serial Bus Architectur...
Floating Point Operations , Memory Chip Organization , Serial Bus Architectur...VAISHNAVI MADHAN
 
Peyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_futurePeyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_futureTakayuki Muranushi
 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSkills Matter
 
Big Data Analytics 3: Machine Learning to Engage the Customer, with Apache Sp...
Big Data Analytics 3: Machine Learning to Engage the Customer, with Apache Sp...Big Data Analytics 3: Machine Learning to Engage the Customer, with Apache Sp...
Big Data Analytics 3: Machine Learning to Engage the Customer, with Apache Sp...MongoDB
 
Srinivas Muddana Resume
Srinivas Muddana ResumeSrinivas Muddana Resume
Srinivas Muddana Resumemuddanas
 
Srinivas Muddana Resume
Srinivas Muddana ResumeSrinivas Muddana Resume
Srinivas Muddana Resumemuddanas
 
Srinivas Muddana Resume
Srinivas Muddana ResumeSrinivas Muddana Resume
Srinivas Muddana Resumemuddanas
 
Apache Arrow (Strata-Hadoop World San Jose 2016)
Apache Arrow (Strata-Hadoop World San Jose 2016)Apache Arrow (Strata-Hadoop World San Jose 2016)
Apache Arrow (Strata-Hadoop World San Jose 2016)Wes McKinney
 
Dynamic Languages in Production: Progress and Open Challenges
Dynamic Languages in Production: Progress and Open ChallengesDynamic Languages in Production: Progress and Open Challenges
Dynamic Languages in Production: Progress and Open Challengesbcantrill
 
"Source Code Abstracts Classification Using CNN", Vadim Markovtsev, Lead Soft...
"Source Code Abstracts Classification Using CNN", Vadim Markovtsev, Lead Soft..."Source Code Abstracts Classification Using CNN", Vadim Markovtsev, Lead Soft...
"Source Code Abstracts Classification Using CNN", Vadim Markovtsev, Lead Soft...Dataconomy Media
 
Natural Language Processing with CNTK and Apache Spark with Ali Zaidi
Natural Language Processing with CNTK and Apache Spark with Ali ZaidiNatural Language Processing with CNTK and Apache Spark with Ali Zaidi
Natural Language Processing with CNTK and Apache Spark with Ali ZaidiDatabricks
 
HUG_Ireland_Apache_Arrow_Tomer_Shiran
HUG_Ireland_Apache_Arrow_Tomer_Shiran HUG_Ireland_Apache_Arrow_Tomer_Shiran
HUG_Ireland_Apache_Arrow_Tomer_Shiran John Mulhall
 
A Deeper Dive into Apache MXNet - March 2017 AWS Online Tech Talks
A Deeper Dive into Apache MXNet - March 2017 AWS Online Tech TalksA Deeper Dive into Apache MXNet - March 2017 AWS Online Tech Talks
A Deeper Dive into Apache MXNet - March 2017 AWS Online Tech TalksAmazon Web Services
 
A Deeper Dive into Apache MXNet - March 2017 AWS Online Tech Talks
A Deeper Dive into Apache MXNet - March 2017 AWS Online Tech TalksA Deeper Dive into Apache MXNet - March 2017 AWS Online Tech Talks
A Deeper Dive into Apache MXNet - March 2017 AWS Online Tech TalksAmazon Web Services
 
Linux and Open Source in Math, Science and Engineering
Linux and Open Source in Math, Science and EngineeringLinux and Open Source in Math, Science and Engineering
Linux and Open Source in Math, Science and EngineeringPDE1D
 

Semelhante a Trends in Programming Technology you might want to keep an eye on af Bent Thomsen, AAU (20)

Are High Level Programming Languages for Multicore and Safety Critical Conver...
Are High Level Programming Languages for Multicore and Safety Critical Conver...Are High Level Programming Languages for Multicore and Safety Critical Conver...
Are High Level Programming Languages for Multicore and Safety Critical Conver...
 
Floating Point Operations , Memory Chip Organization , Serial Bus Architectur...
Floating Point Operations , Memory Chip Organization , Serial Bus Architectur...Floating Point Operations , Memory Chip Organization , Serial Bus Architectur...
Floating Point Operations , Memory Chip Organization , Serial Bus Architectur...
 
Floating Point Operations , Memory Chip Organization , Serial Bus Architectur...
Floating Point Operations , Memory Chip Organization , Serial Bus Architectur...Floating Point Operations , Memory Chip Organization , Serial Bus Architectur...
Floating Point Operations , Memory Chip Organization , Serial Bus Architectur...
 
Peyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_futurePeyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_future
 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelism
 
Big Data Analytics 3: Machine Learning to Engage the Customer, with Apache Sp...
Big Data Analytics 3: Machine Learning to Engage the Customer, with Apache Sp...Big Data Analytics 3: Machine Learning to Engage the Customer, with Apache Sp...
Big Data Analytics 3: Machine Learning to Engage the Customer, with Apache Sp...
 
Resume
ResumeResume
Resume
 
Srinivas Muddana Resume
Srinivas Muddana ResumeSrinivas Muddana Resume
Srinivas Muddana Resume
 
Srinivas Muddana Resume
Srinivas Muddana ResumeSrinivas Muddana Resume
Srinivas Muddana Resume
 
Srinivas Muddana Resume
Srinivas Muddana ResumeSrinivas Muddana Resume
Srinivas Muddana Resume
 
Apache Arrow (Strata-Hadoop World San Jose 2016)
Apache Arrow (Strata-Hadoop World San Jose 2016)Apache Arrow (Strata-Hadoop World San Jose 2016)
Apache Arrow (Strata-Hadoop World San Jose 2016)
 
Dynamic Languages in Production: Progress and Open Challenges
Dynamic Languages in Production: Progress and Open ChallengesDynamic Languages in Production: Progress and Open Challenges
Dynamic Languages in Production: Progress and Open Challenges
 
C som-programmeringssprog-bt
C som-programmeringssprog-btC som-programmeringssprog-bt
C som-programmeringssprog-bt
 
"Source Code Abstracts Classification Using CNN", Vadim Markovtsev, Lead Soft...
"Source Code Abstracts Classification Using CNN", Vadim Markovtsev, Lead Soft..."Source Code Abstracts Classification Using CNN", Vadim Markovtsev, Lead Soft...
"Source Code Abstracts Classification Using CNN", Vadim Markovtsev, Lead Soft...
 
Natural Language Processing with CNTK and Apache Spark with Ali Zaidi
Natural Language Processing with CNTK and Apache Spark with Ali ZaidiNatural Language Processing with CNTK and Apache Spark with Ali Zaidi
Natural Language Processing with CNTK and Apache Spark with Ali Zaidi
 
HUG_Ireland_Apache_Arrow_Tomer_Shiran
HUG_Ireland_Apache_Arrow_Tomer_Shiran HUG_Ireland_Apache_Arrow_Tomer_Shiran
HUG_Ireland_Apache_Arrow_Tomer_Shiran
 
IN4308 1
IN4308 1IN4308 1
IN4308 1
 
A Deeper Dive into Apache MXNet - March 2017 AWS Online Tech Talks
A Deeper Dive into Apache MXNet - March 2017 AWS Online Tech TalksA Deeper Dive into Apache MXNet - March 2017 AWS Online Tech Talks
A Deeper Dive into Apache MXNet - March 2017 AWS Online Tech Talks
 
A Deeper Dive into Apache MXNet - March 2017 AWS Online Tech Talks
A Deeper Dive into Apache MXNet - March 2017 AWS Online Tech TalksA Deeper Dive into Apache MXNet - March 2017 AWS Online Tech Talks
A Deeper Dive into Apache MXNet - March 2017 AWS Online Tech Talks
 
Linux and Open Source in Math, Science and Engineering
Linux and Open Source in Math, Science and EngineeringLinux and Open Source in Math, Science and Engineering
Linux and Open Source in Math, Science and Engineering
 

Mais de InfinIT - Innovationsnetværket for it

Mais de InfinIT - Innovationsnetværket for it (20)

Erfaringer med-c kurt-noermark
Erfaringer med-c kurt-noermarkErfaringer med-c kurt-noermark
Erfaringer med-c kurt-noermark
 
Object orientering, test driven development og c
Object orientering, test driven development og cObject orientering, test driven development og c
Object orientering, test driven development og c
 
Embedded softwaredevelopment hcs
Embedded softwaredevelopment hcsEmbedded softwaredevelopment hcs
Embedded softwaredevelopment hcs
 
C og c++-jens lund jensen
C og c++-jens lund jensenC og c++-jens lund jensen
C og c++-jens lund jensen
 
201811xx foredrag c_cpp
201811xx foredrag c_cpp201811xx foredrag c_cpp
201811xx foredrag c_cpp
 
Infinit seminar 060918
Infinit seminar 060918Infinit seminar 060918
Infinit seminar 060918
 
DCR solutions
DCR solutionsDCR solutions
DCR solutions
 
Not your grandfathers BPM
Not your grandfathers BPMNot your grandfathers BPM
Not your grandfathers BPM
 
Kmd workzone - an evolutionary approach to revolution
Kmd workzone - an evolutionary approach to revolutionKmd workzone - an evolutionary approach to revolution
Kmd workzone - an evolutionary approach to revolution
 
EcoKnow - oplæg
EcoKnow - oplægEcoKnow - oplæg
EcoKnow - oplæg
 
Martin Wickins Chatbots i fronten
Martin Wickins Chatbots i frontenMartin Wickins Chatbots i fronten
Martin Wickins Chatbots i fronten
 
Marie Fenger ai kundeservice
Marie Fenger ai kundeserviceMarie Fenger ai kundeservice
Marie Fenger ai kundeservice
 
Mads Kaysen SupWiz
Mads Kaysen SupWizMads Kaysen SupWiz
Mads Kaysen SupWiz
 
Leif Howalt NNIT Service Support Center
Leif Howalt NNIT Service Support CenterLeif Howalt NNIT Service Support Center
Leif Howalt NNIT Service Support Center
 
Jan Neerbek NLP og Chatbots
Jan Neerbek NLP og ChatbotsJan Neerbek NLP og Chatbots
Jan Neerbek NLP og Chatbots
 
Anders Soegaard NLP for Customer Support
Anders Soegaard NLP for Customer SupportAnders Soegaard NLP for Customer Support
Anders Soegaard NLP for Customer Support
 
Stephen Alstrup infinit august 2018
Stephen Alstrup infinit august 2018Stephen Alstrup infinit august 2018
Stephen Alstrup infinit august 2018
 
Innovation og værdiskabelse i it-projekter
Innovation og værdiskabelse i it-projekterInnovation og værdiskabelse i it-projekter
Innovation og værdiskabelse i it-projekter
 
Rokoko infin it presentation
Rokoko infin it presentation Rokoko infin it presentation
Rokoko infin it presentation
 
Kenny erleben infinit_workshop
Kenny erleben infinit_workshopKenny erleben infinit_workshop
Kenny erleben infinit_workshop
 

Último

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Último (20)

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Trends in Programming Technology you might want to keep an eye on af Bent Thomsen, AAU

  • 1. Trends in Programming Technology you might want to keep an eye on Bent Thomsen bt@cs.aau.dk Department of Computer Science Aalborg University 1
  • 5. Conclusions • Nothing has changed much • Main languages have their domain – Java – for web applications – C – for system programming – (Visual) Basic – for desktop windows apps – PHP for serverside scripting – C++ when Java is (perceived) too slow • We can go home now • Wait a minute! • Something is changing – Software is getting more and more complex – Hardware has changed 5
  • 6. Web-based applications today Presentation: HTML, CSS, Javascript, Flash, Java applets, ActiveX controls, Silverlight Application server Web server Content management system Business logic: C#, Java, VB, PHP, Perl, Python,Ruby … Beans, servlets, CGI, ASP.NET,… Operating System Database: SQL Sockets, HTTP, email, SMS, XML, SOAP, File system REST, Rails, reliable Replication, distribution, messaging, AJAX, … load-balancing, security, 6 concurrency
  • 7. The Hardware world is changing! 7
  • 8. Moore’s Law • Popular belief: – Moore’s Law stopped working in 2005! • Moore’s Law (misinterpreted): – The processor speed doubles every 18 months • Moore’s Law still going strong – the number of transistors per unit area on a chip doubles every 18 months • Instead of using more and more HW real-estate on cache memory it is now used for multiple cores 8
  • 9. The IT industry wakeup call • The super computing community discovered the change in hardware first • The rest of the computing industry are in for an eye-opener soon! • Some have started to worry “Multicore: This is the one which will have the biggest impact on us. We have never had a problem to solve like this. A breakthrough is needed in how applications are done on multicore devices.” – Bill Gates 9
  • 10. A programmer’s view of memory This model was pretty accurate in 1985. Processors (386, ARM, MIPS, SPARC) all ran at 1–10MHz clock speed and could access external memory in 1 cycle; and most instructions took 1 cycle. Indeed the C language was as expressively time-accurate as a language could be: almost all C operators took one or two cycles. But this model is no longer accurate! 10
  • 11. A modern view of memory timings So what happened? On-chip computation (clock-speed) sped up faster (1985–2005) than off-chip communication (with memory) as feature sizes shrank. The gap was filled by spending transistor budget on caches which (statistically) filled the mismatch until 2005 or so. Techniques like caches, deep pipelining with bypasses, and superscalar instruction issue burned power to preserve our illusions. 2005 or so was crunch point as faster, hotter, single-CPU Pentiums were scrapped. These techniques had delayed the inevitable. 11
  • 12. The Current Mainstream Processor Will scale to 2, 4 maybe 8 processors. But ultimately shared memory becomes the bottleneck (1024 processors?!?). 12
  • 13. Programming model(s) reflecting the new world are called for • Algorithm should do most work on local data !! • Programmers need to – know what is local and what is not – need to deal with communication – make decisions on parallel execution • But how can the poor programmer ensure this? • She/he has to exploit: – Data Parallelism – Task parallelism • She/he needs programming language constructs 13 to help her/him
  • 14. Which languages are discussed? 14 Source: http://langpop.com
  • 16. Three Trends • Declarative programming languages in vogue again – Especially functional • Dynamic Programming languages are gaining momentum • Concurrent Programming languages are back on the agenda 16
  • 17. Declarative Programming • Lots of talk about declarative languages: – Haskell – Scheme, Lisp, Clojure – F#, O’Caml, SML – Scala, Fortress • Lots of talk about declarative constructs in traditional languages – C# 17
  • 18. What do we mean by declarative/functional? • Say what you want, without saying how – Not quite true – more a question of saying how implicitly • Functions as first class entities • Lazy or(/and) eager evaluation • Pure vs. impure • Value oriented (vs. state oriented) • Pattern matching • Generics (or parametric polymorphism) 18
  • 19. Mainstream programming is going declarative Four years ago Anders Heilsberg (designer of C#) said: ``Generally speaking, it's interesting to think about more declarative styles of programming vs. imperative styles. ... Functional programming languages and queries are actually a more declarative style of programming''. ``programmers have to unlearn .. and to learn to trust that when they're just stating the ``what'' The machine is smart enough to do the ``how'' the way they want it done, or the most efficient way''. - Anders Hejlsberg 19
  • 20. Name the language... C# 3.0 • Quicksort revisited parameterized type of functions Func<intlist, intlist> Sort = xs => higher-order function xs.Case( lambda expression () => xs, (head,tail) => (Sort(tail.Where(x => x < head))) .Concat (Single(head)) append type inference .Concat (Sort(tail.Where(x => x >= head))) ); filter recursion 20
  • 21. C# 3.0 Language Extensions Query var contacts = expressions from c in customers where c.State == "WA" Local variable select new { c.Name, c.Phone }; type inference Lambda expressions var contacts = customers .Where(c => c.State == "WA") .Select(c => new { c.Name, c.Phone }); Extension methods Anonymous Object types initializers 21
  • 22. C# 3.0 Features – Implicitly Typed Local Variables – Lambda Expressions – Anonymous Types – Expression Trees – Query Expressions – Extension Methods – Object Initializers – Collection Initializers – Iterators – Lazy streams – Nullable value types – C# 2.0 already have: • Generics • Structured Value Types • First class anonymous functions (called delegates) 22
  • 23. F# • A .NET language (developed by Don Syme) – Connects with all Microsoft foundation technologies – 3rd official MS language shipped with VS2010 • Aims to combine the best of Lisp, ML, Scheme, Haskell, in the context of .NET – Actually based on O’Caml • Functional, math-oriented, scalable • Aimed particularly at the "Symbolic Programming" niche at Microsoft 23
  • 24. F# on one slide NOTE: type inferred • let data = (1,2,3) val data: int * int * int • let sqr x = x * x val sqr: int -> int • let f (x,y,z) = (sqr x, sqr y, sqr z) NOTE: parentheses optional on • let sx,sy,sz = f (10,20,30) application NOTE: • print "hello world"; 1+2 NOTE: sequencing pattern matching• let show x y z = • printf "x = %d y = %d y = %d n" x y z; • let sqrs= f (x,y,z) in • print "Hello worldn"; • sqrs NOTE: local binding, sequencing, return • let (|>) x f = f x NOTE: pipelining operator 24
  • 25. Beyond Java "A Conversation With Guy Steele Jr." Dr. Dobb's Journal (04/05) Vol. 30, No. 4, P. 17; Woehr, Jack J. Guy Steele theorizes that programming languages are finite, and argues that the time is right for a successor to Java, which has another two decades of life left. Sun is investigating whether aligning programming languages more closely to traditional mathematical notation can reduce the burden for scientific programmers Guy Steele co-wrote the original Java specifications and in 1996 was awarded the ACM SIGPLAN Programming Language Achievement Award. Steele is a distinguished engineer and principal investigator at Sun Microsystems Laboratories, where he heads the company's25 Programming Language Research Group.
  • 26. Fortress • One of the three languages DARPA spent 1BN$ on – Actually SUN only got 49.7M$ (IBM and CRAY got the rest) • First class higher order functions • Type inference • immutable and mutable variables • Traits – Like Java interfaces with code, classes without fields • Objects – Consist of fields and methods • Designed to be parallel unless explicit sequential – For loops and generators, tuples – Transactional Memory – PGAS (Partitioned Global Address Space) • Runs on top of the JVM 26
  • 27. “Advances” in Syntax • Extensible syntax – follows Guy Stell’s vision of “Growing a language” – The only language I know with overloadable whitespace! – Syntax based on Parsing Expression Grammars (PEG) • Syntax resembling mathematical notation 27
  • 28. Scala • Scala is an object-oriented and functional language which is completely interoperable with Java – Developed by Martin Odersky, EPFL, Lausanne, Switzerland • Uniform object model – Everything is an object – Class based, single inheritance – Mixins and traits – Singleton objects defined directly • Higher Order and Anonymous functions with Pattern matching • Genericity • Extendible – All operators are overloadable, function symbols can be pre-, post- or infix – new control structures can be defined without using macros 28
  • 29. Scala is Object Oriented object instead of var: Type instead of Type var static members Scala programs interoperate seamlessly object Example1 { with Java class libraries: def main(args: Array[String]) { – Method calls – Field accesses val b = new StringBuilder() – Class inheritance for (i ← 0 until args.length) { – Interface implementation if (i > 0) b.append(" ") all work as in Java. b.append(args(i).toUpperCase) Scala programs compile to } JVM bytecodes. Console.println(b.toString) Scala’s syntax resembles } Java’s, but there are also } some differences. Scala’s version of the extended for loop Arrays are indexed (use <- as an alias for ←) args(i) instead of args[i] 29
  • 30. Scala is functional sequences Arrays are instancesArray which map is a method of of with map and mkString methods. applies the function on its right to each array element. The last program can object Example2 { also def main(args: Array[String]) { be written in a println(args map (_.toUpperCase) completely mkString " ") different style: } } – Treat arrays as instances of general sequence abstractions. A closure which applies the mkString is a method of Array which to its toUpperCase method – Use higher-order forms a string of all elementsargument String with a functions instead of given separator between them. loops. 30
  • 31. Scala’s approach • Scala applies Tennent’s design principles: – concentrate on abstraction and composition capabilities instead of basic language constructs – Minimal orthogonal set of core language constructs • But it is European  31
  • 32. Clojure • Concurrent Lisp like language on JVM – Developed by Rich Hickey • Everything is an expression, except: – Symbols – Operations (op ...) – Special operations: • def if fn let loop recur do new . throw try set! quote var • Code is expressed in data structures • Functions are first-class values • Clojure is homoiconic 32
  • 34. Dynamic Programming • Lots of talk about dynamic languages – PhP, Perl, Ruby – JavaScript – Lisp/Scheme – Erlang – Groovy – Clojure – Python • jPython for JVM and IronPyhon for .Net • Real-programmers don’t need types 34
  • 35. 35
  • 36. 36
  • 37. Dynamic Language characteristics • (Perceived) to be less verbose – Comes with good libraries/frameworks • Interpreted or JIT to bytecode • Eval: string -> code • REPL style programming • Embeddable in larger applications as scripting language • Supports Higher Order Function! • Object oriented – JavaScript, Ruby and Python – Based on Self resp. SmallTalk • Meta Programming made easier 37
  • 38. Dynamic Programming in C# 4.0 – Dynamic Lookup • A new static type called: dynamic • No static typing of operations with dynamic • Exceptions on invalid usage at runtime dynamic d = GetDynamicObject(…); d.M(7); // calling methods d.f= d.P; // getting and settings fields and properties d[“one”] = d[“two”]; // getting and setting thorughindexers Int i= d + 3; // calling operators string s = d(5,7); // invoking as a delegate – Optional and Named Parameters – COM interop features – (Co-and Contra-variance) 38
  • 39. Concurrent Programming • Lots of talk about Erlang • Fortress, X10 and Chapel • Java.util.concurrency • Actors in Scala • Clojure • C omega • F# - Accelerator on GPU • .Net Parallel Extensions 39
  • 40. The problem with Threads • Threads – Program counter – Own stack – Shared Memory – Create, start (stop), yield .. • Locks – Wait, notify, notifyall – manually lock and unlock • or implicit via synchronized – lock ordering is a big problem – Not compositional 40
  • 41. Several directions • (Software) Transactional Memory – Enclose code in begin/end blocks or atomic blocks – Variations • specify manual abort/retry • specify an alternate path (way of controlling manual abort) – Java STM2 library – Clojure, Fortress, X10, Chapel 41
  • 42. Message Passing/Actors – Erlang – Scala Actors – F#/Axum 42
  • 43. Theoretical Models • Actors • CSP • CCS • pi-calculus • join-calculus • All tried and tested in many languages over the years, but … 43
  • 44. Problems with Actor like models • Actors (Agents, Process or Threads) are not free • Message sending is not free • Context switching is not free • Still need Lock acquire/release at some level and it is not free • Multiple actor coordination – reinvent transactions? – Actors can still deadlock and starve – Programmer defines granularity by choosing what is an actor 44
  • 45. Other concurrency models • Dataflow – Stream Processing Functions • Futures • Tuple Spaces • Stop gap solutions based on parallelised libraries • Lots of R&D (again) in this area!!! 45
  • 46. Other trends worth watching • Development methods – Away from waterfall, top-down – Towards agile/XP/Scrum – Refactoring – Frameworks, Patterns – test-driven-development • Tools – Powerful IDEs with plug-ins – Frameworks – VM and OS integrations • MS PowerShell, v8 in Android • Programming Language construction is becoming easier – Extendible Open (source) Compilers for most mainstream languages – AST (or expression trees in C#/F# and Fortress) – Generic code generators – Parsing Expression Grammars (PEG) 46
  • 47. Implications for real-time • New ways of programming is back on the agenda • But .. – C as popular as ever!! – ADA is still around • No. 10 in list of languages talked about • No. 20 on skills in jobs advertised – Java still most popularity (albeit declining a little) • The only modern language serious about hard-real time! 47
  • 48. What about all the new declarative and dynamic stuff? • Higher Order Programming – Elegant programming styles – Harder to analyse control flow – Usually imply use of GC • Dynamic Programming – Lots of run-time checks – Harder to analyse type violations • Frameworks written for average-time performance, not worst case analysis • VM technology is improving a lot – But special VMs are needed for RT 48
  • 49. Promises for real-time • New ways of programming is back on the agenda • Understanding of HW has (again) become necessary • Semantics is back on the agenda – SOS/Calculi for Fortress, Scala, F# – Advanced type systems and type inference • Program Analysis and verification – JML and SPEC# (Design by contract) – SPIN, Blast, UPPAAL – ProVerif (Microsoft) – JavaPathfinder (NASA, Fujitsu) – WALA (IBM) osv. 49
  • 50. So how would you like to programme in 20 years? 50
  • 51. How would you like to program in 20 years? • Research project (codename P2025) – Reviewing the state-of-the-art – Experimenting with advanced programming • Functional and OO integration • Programmatic Program Construction – Developing a new programming language • ”The P-gang”: • Kurt Nørmark • Lone Leth • Bent Thomsen • Simon Kongshøj • (Petur Olsen og Thomas Bøgholm) • (Thomas Vestdam) 51
  • 52. Approach • Basic Research (Grundforskning) – someone has to do it … • We want to influence the next generation of mainstream programming languages • Integration playground for new language ideas • Constructive: design and implement – languages and compilers – Experimental systems • Openness and open source • Umbrella covering the research work of the group in coming years – Research, Master Thesis (speciale), DAT7/8 and PhD 52 • Several Master Student projects already done
  • 53. Bent Thomsen • MSc. (Cand. Scient) in CS and maths, AAU, 1981-1987 – Modal transition systems • PhD Computing, Imperial College, 1987-1990 – Calculus of Higher Order Concurrent systems • European Computer Manufacturers Research Centre, Munich, 1990-1996 – Facile programming language – Calumet teleconferencing – Mobile service Agents • ICL (now Fujitsu), 1996-2002 – Agent programming – Mobile Enabling ICL • AAU, DPT, 2002-(2025??) – Programming – Compiler construction and language design – Mobile Software Technologies – Super Computer Programming – Hard-real time programming in Java – Indoor location based systems – P2025 53
  • 54. Some of my Background Knowledge Mapping and Visiting in Functional and Object Oriented Programming Kurt Nørmark, Bent Thomsen, and Lone Leth Thomsen JOT: Journal of Object Technology http://www.jot.fm/issues/issue_2008_09/article2/index.html Computational Abstraction Steps Kurt Nørmark, Bent Thomsen, and Lone Leth Thomsen Submitted for publication in JOT: Journal of Object Technology Towards Transactional Memory for Real-Time Systems. Martin Schoberl, Bent Thomsen and Lone Leth Thomsen Technical report. 09-001 Department of Computer Science, AAU, 2009 54
  • 55. Some of my Background Knowledge “Towards Global Computations Guided by Concurrency Theory”, Bent Thomsen and Lone Leth, in Chapter 4, in Current Trends in Theoretical Computer Science, Entering the 21st century, G. Paun, G. Rozenberg and A. Salomaa (Editors), World Scientific Publishing, 2001. “Programming Languages, Analysis Tools and Concurrency Theory”, Bent Thomsen, ACM Computing Surveys 28A(4), December 1996. (http://www.acm.org/pubs/articles/journals/surveys/1996-28-4es/a57- thomsen/a57-thomsen.html) “FACILE - from Toy to Tool”, Bent Thomsen, Lone Leth and Tsung-Min Kuo, Chapter 5 in ML with Concurrency: Design, Analysis, Implementation, and Application, Flemming Nielson (Editor), Springer- Verlag, 1996. 55

Notas do Editor

  1. The TIOBE Programming Community index gives an indication of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, MSN, Yahoo!, Wikipedia and YouTube are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.
  2. Yahoo provides an API to its search API. Previous versions of these statistics used numbers from Google, but since Google has deprecated its own API, we utilized Yahoo&apos;s. Searches took the form &quot; language programming&quot; Craigslist We used Yahoo&apos;s search API for this too, with queries like this: language programmer -&quot;job wanted&quot; site:craigslist.org Popular languages are used more in industry, and consequently, people post job listings that seek individuals with experience in those languages. This is probably something of a lagging indicator, because a language is likely to gain popularity prior to companies utilizing it and consequently seeking more people with experience in it. Powell&apos;s Books Freshmeat The data from Freshmeat were obtained via their new API: http://help.freshmeat.net/faqs/api-7/data-api-intro . Freshmeat is a good place to get data on open source projects that have passed the early stages and actually released something. These results most likely reflect differences in what people are paid to work with and what they choose to work with when they can choose. There were no freshmeat projects utilizing Cobol, for example, although it seems to fare decently in the other results. Google Code Data from Google Code Search was obtained using the API to search here: http:// www.google.com/codesearch This is similar to Freshmeat in that it favors open source projects with code floating around on the web. Unfortunately, it seems that the Google Code people don&apos;t like Forth much, as it&apos;s not on their list of languages. I have renewed the request to add it . Del.icio.us Data from Del.icio.us was obtained with the Yahoo Search API, because the del.icio.us API really isn&apos;t up to the job yet. We did site: searches like language programming. This is an interesting bit of data for a couple of reasons. First of all, it seems more linear that the others. It ought to reflect what people genuinely find interesting or useful themselves, rather than what they put out there at random, which means they have an incentive to be &apos;honest&apos;. The order of the language also seems to change significantly compared to the other data sets. Ohloh Ohloh provides a lot of information and statistics about various open source projects. We decided to use the number of people committing code in a particular language, rather than something like lines of code, as languages like C will always have more lines than, say, shell scripts.
  3. 1024 processors by 2017 if Moore’s law still apply
  4. 12/04/12 18:00 © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.