Lekcja 9. Programming languages. Part 2

10 października 2016
1 gwiadka2 gwiazdki3 gwiazdki4 gwiazdki5 gwiazdek

Obejrzyj poniższy film. Nie przejmuj się, jeśli nie wszystko w nim zrozumiesz. Najważniejsze jest to, aby obejrzeć go przed przeczytaniem tekstu.

Odpowiedz na poniższe pytania.

  1. What are the two main ways to get the source code converted into machine code?
  2. What do you call the program that compiles the source code into machine code?
  3. What are compiled files sometimes called?
  4. What’s the difference between a compiler and an interpreter?
  5. Do web browsers interpret JavaScript code?
  6. What are the advantages of compiled code?
  7. What are the downsides of compiled code?
  8. What are the advantages of interpreted code?
  9. What are the downsides of interpreted code?
  10. What are the characteristic properties of compiled model?
  11. What are the characteristic properties of interpreted model?
  12. What is an intermediate language?
  13. What is JiT compilation?
  14. What is byte code?
  15. What compiled languages does the speaker mention?
  16. What interpreted languages does the speaker mention?
  17. What languages using byte code does the speaker mention?
  18. In what situation would you definitely choose a compiled programming language?
  19. In what situation would you definitely choose an interpreted programming language?

Programming languages can be classified by intended domain of use into two broad categories, general-purpose programming languages and domain-specific programming languages. General-purpose programming language is designed to support a wide variety of uses and a domain-specific programming language is designed to be used within a specific application domain.

A programming language is said to be Turing complete if it can be used to simulate any single-taped Turing machine, i.e. it can be used to simulate some Turing complete system. For example, an imperative language is Turing complete if it has conditional branching and the ability to change an arbitrary amount of memory locations.

Implementation

An implementation of a programming language provides a way to write programs in that language and execute them on one or more configurations of hardware and software. There are, broadly, two approaches to programming language implementation: compilation and interpretation.

The output of a compiler may be executed by hardware or a program called an interpreter. In some implementations that make use of the interpreter approach there is no distinct boundary between compiling and interpreting. For instance, some implementations of BASIC compile and then execute the source a line at a time.

Programs that are executed directly on the hardware usually run several orders of magnitude faster than those that are interpreted in software.

One technique for improving the performance of interpreted programs is just-in-time compilation. Here the virtual machine, just before execution, translates the blocks of bytecode which are going to be used to machine code, for direct execution on the hardware.

Markup languages

Markup languages like XML or HTML, which define structured data, like spreadsheets, address books, configuration parameters, financial transactions, and technical drawings, are not usually considered programming languages.

Scripting languages

A scripting language or script language is a programming language that supports scripts, programs written for a special run-time environment that can interpret (rather than compile) and automate the execution of tasks that could alternatively be executed one by one by a human operator. Environments that can be automated through scripting include software applications, web pages within a web browser, the shells of operating systems (OS), and embedded systems.

According to John Ousterhout, the creator of the Tcl scripting language, scripting languages can be compared to a glue as they are typeless and "assume the existence of a set of powerful components and are intended primarily for connecting components." On the other hand, " system programming languages are strongly typed and were designed for building data structures and algorithms from scratch."

Vocabulary

a line at a time
po jednej linijce, po jednym wierszu
an approach
to podejście
application domain
dziedzina zastosowań
arbitrary amount
dowolna ilość
automated through scripting
zautomatyzowany za pomocą skryptów
blocks of bytecode
bloki kodu bajtowego
boundary between
granica między
broad category
szeroka kategoria
broadly
zasadniczo, mówiąc najogólniej
compilation
kompilacja
conditional branching
rozgałęzienie warunkowe
configuration
konfiguracja
configuration parameters
parametry konfiguracyjne
designed to be used within
przeznaczony do użycia w
designed to support a wide variety of uses
przeznaczony do wielu różnych zastosowań
domain-specific programming languages
język programowania specjalnego przeznaczenia
embedded system
system wbudowany
environment
środowisko
execute
wykonywać
executed directly on the hardware
wykonywany bezpośrednio przez sprzęt
for instance
na przykład
from scratch
od początku
general-purpose programming language
język programowania ogólnego przeznaczenia
hardware
sprzęt
human
człowiek
i.e.
tj.
implementation of a programming language
implementacja języka programowania
improving the performance
poprawianie wydajności
intended domain of use
planowana dziedzina użytkowania
intended primarily for…
przeznaczony głównie do…
interpretation
interpretacja
interpreter
interpreter
is said to be
„jest uważany za”
just-in-time (JIT) compilation
kompilacja na czas
machine code
kod maszynowy
markup language
język znaczników
memory location
miejsce w pamięci
on the other hand
z drugiej strony
one by one
jeden po drugim
one or more
jeden lub więcej
operating system
system operacyjny
order of magnitude
rząd wielkości
run-time environment
środowisko wykonawcze
script
skrypt
scripting language, script language
język skryptowy
shell
powłoka
single-taped Turing machine
jednotaśmowa maszyna Turinga
software application
aplikacja
software
oprogramowanie
spreadsheet
arkusz kalkulacyjny
strongly typed
ze ścisłą kontrolą typów
structured data
dane strukturalne
system programming language
systemowy język programowania
technical drawing
rysunek techniczny
the ability to change
możliwość zmieniania
the creator of
twórca
the output of a compiler
wynik działania kompilatora
there is no
nie ma
to assume the existence of…
zakładać istnienie…
to automate
zautomatyzować
to classify by sth into x categories
podzielić wg jakiegoś kryterium na x kategorii
to provide a way
to umożliwiać robienie czegoś, pozwalać na robienie czegoś
Turing complete
spełniający warunki kompletności Turinga
typeless
pozbawiony typów
virtual machine
maszyna wirtualna
web browser
przeglądarka internetowa
web page
strona internetowa
which are going to be used
które mają zostać wykorzystane

Exercises

Exercise 1. Match the words in column A with their partners in column B.

domain ofcategory
broada way to
general-purposeuse
applicationenvironment
Turinglocation
conditionalbranching
structuredparameters
configurationinstance
technicalmachine
run-timeprogramming language
memorydrawings
to providecompilation
fordomain
just-in-timedata

Exercise 2. Answer the following questions.

  1. How can programming languages be classified?
  2. What is general-purpose programming language?
  3. What is domain-specific programming language?
  4. What does it mean that a programming language is Turing complete?
  5. What is implementation of a programming language?
  6. What are two most common approaches to programming language implementation?
  7. What can the output of a compiler be used for?
  8. How can the performance of an interpreted language be improved?
  9. What are markup languages?
  10. What is the difference between markup languages and programming languages?
  11. What is a scripting language?
  12. What is a scripting language according to John Ousterhout?
  13. What is the difference between scripting languages and compiled languages?

Exercise 3. Translate the Polish part of the following sentences into English. Use "designed to".

Example: General-purpose programming languages… mają szerokie spektrum zastosowań. -> …are designed to support a wide variety of uses.

  1. Domain-specific programming languages… są przeznaczone do użytku w ściśle określonej dziedzinie.
  2. Programming languages… są przeznaczone do wydawania komputerowi poleceń.
  3. Compilers… są przeznaczone do tłumaczenia kodu źródłowego na kod maszynowy.
  4. Interpreters… są przeznaczone do bezpośredniego wykonywania kodu źródłowego.
  5. Some implementations of BASIC… kompilują i wykonują kod źródłowy linijka po linijce.
  6. Virtual machines… tłumaczą kod bajtowy na kod maszynowy.
  7. Just-in-time compilers… umożliwiają poprawienie wydajności interpretowanych programów.
  8. Markup languages… są przeznaczone do definiowania danych strukturalnych.
  9. Scripting languages… są przeznaczone do automatyzacji wykonywania pewnych zadań.

Exercise 4. Translate the following sentences into English. Use "to provide a way to".

Example: Implementacja języka programowania umożliwia pisanie programów w tym języku. -> An implementation of a programming language provides a way to write programs in that language.

  1. Implementacja języka programowania umożliwia wykonywanie programów w tym języku.
  2. Interpreter umożliwia wykonywanie skryptów bezpośrednio bez kompilacji.
  3. Języki znacznikowe służą do definiowania danych strukturalnych.
  4. Języki skryptowe służą do pisania skryptów.
  5. Kompilacja na czas umożliwia poprawienie wydajności programów.
  6. Maszyna wirtualna umożliwia tłumaczenie kodu bajtowego na kod maszynowy.
  7. Maszyna wirtualna umożliwia wykonywanie kodu maszynowego bezpośrednio na sprzęcie.
  8. Języki programowania ogólnego przeznaczenia umożliwiają pisanie ogólnych programów.
  9. Specjalne języki programowania umożliwiają pisanie specjalistycznych programów.
  10. Kompilator umożliwia przetłumaczenie kodu źródłowego na kod maszynowy.
  11. Języki znacznikowe umożliwiają reprezentowanie arkuszy kalkulacyjnych.

Exercise 5. Answer in full sentences the following questions following the example.

Example: What are scripting languages intended primarily for? -> Scripting languages are intended primarily for connecting components.

  1. What are general-purpose programming languages intended primarily for?
  2. What are domain-specific programming languages intended primarily for?
  3. What is an implementation of a programming language intended primarily for?
  4. What are compilers intended primarily for?
  5. What are interpreters intended primarily for?
  6. What is just-in-time compilation intended primarily for?
  7. What are markup languages intended primarily for?
  8. What are system programming languages intended primarily for?

Exercise 6. Translate the following texts into English, as in the example.

Java to obiektowy język programowania ogólnego przeznaczenia z możliwością współbieżnego wykonywania operacji i przeznaczony do wykonywania w maszynie wirtualnej. Aplikacje Java są kompilowane do postaci kodu bajtowego, który można uruchomić w dowolnej maszynie wirtualnej (JVM). Java to jeden z najpopularniejszych języków programowania. Twórcą tego języka, który został przedstawiony światu w 1995 roku, jest James Gosling z firmy Sun Microsystems. Składnia Javy w dużym stopniu jest wzorowana na składni języków C i C++, ale ma mniej niskopoziomowych elementów.

Java is a general-purpose object-oriented programming language that provides for the execution of operations concurrently and is designed to be run on a virtual machine. Java applications are compiled to bytecode that can run on any Java virtual machine (JVM). Java is one of the most popular programming languages. Java was originally developed by James Gosling at Sun Microsystems and released in 1995. The language derives much of its syntax from C and C++, but it has fewer low-level facilities.

  1. C++ to obiektowy język programowania ogólnego przeznaczenia z możliwością programowania imperatywnego i niskopoziomowego. Aplikacje C++ są kompilowane do postaci kodu maszynowego, który można uruchomić tylko na tej platformie, na której zostały skompilowane. C++ to jeden z najpopularniejszych języków programowania. Jego twórcą jest Bjarne Stroustrup z AT&T Bell Labs. Składnia języka C++ jest wzorowana na składni języków C, ALGOL 68, Ada, CLU oraz ML.
  2. PHP to obiektowy serwerowy język programowania, którego można także używać jako języka programowania ogólnego przeznaczenia. Aplikacje PHP są interpretowane przez implementację referencyjną Zend lub inną. PHP jest jednym z najpopularniejszych serwerowych języków programowania. Został stworzony przez Rasmusa Lerdorfa w 1994 roku. Składnia języka PHP jest podobna do innych wysokopoziomowych języków programowania wzorowanych na składni języka C.
  3. Ruby to otwarty funkcyjny język programowania z możliwością programowania imperatywnego i dynamicznego. Aplikacje Ruby są kompilowane do postaci kodu bajtowego, który można wykonywać w maszynie wirtualnej o nazwie YARV. Ruby to jeden z najpopularniejszych dynamicznych języków programowania. Stworzył go w połowie lat 1990. Yukihiro "Matz" Matsumoto. Składnia języka Ruby czerpie ze składni języków Perl, Smalltalk, Eiffel, Ada oraz Lisp.
  4. Prolog to logiczny i deklaracyjny język programowania ogólnego przeznaczenia kojarzony ze sztuczną inteligencją i lingwistyką komputerową. Kod źródłowy w tym języku jest zazwyczaj kompilowany do postaci abstrakcyjnego kodu maszynowego. Prolog to jeden z najbardziej znanych logicznych języków programowania. Stworzył go w latach 1970. Alain Colmerauer ze swoim zespołem. Składnia języka Prolog zawiera tylko jeden typ danych — termy.
  5. Objective-C to obiektowy język programowania ogólnego przeznaczenia wykorzystywany głównie do tworzenia programów dla systemów operacyjnych Apple OS X i iOS. Aplikacje w tym języku są kompilowane do postaci kodu macierzystego. Objective-C to podstawowy język programowania na platformach firmy Apple. Jego twórcą jest Brad J. Cox. Składnia języka Objective-C jest wzorowana na językach C i Smalltalk-80.

Exercise 7. Look at the data and say sentences about them following the example.

Example: 10 vs. 1000 -> 10 is two orders of magnitude larger than 10.

  1. 230 vs. 45678
  2. 1 vs 10
  3. The number of transistors in Pentium 1: 3 million vs The number of transistors in Pentium 4: 188 million
  4. 23 vs 3 × 105
  5. √36 vs. 1000000/100
  6. 100 bacteria in a flask vs 1000 bacteria in a flask
  7. Earth’s mass is 1022 tons; Sun’s mass is 1027 tons
  8. In 1991 there was 1 website vs in 2014 there were over 1 billion websites

Exercise 8. Use the information below to say sentences using „the creator of”, as in the example.

Example: Bjarne Stroustrup, C++ -> Bjarne Stroustrup is the creator of the C++ programming language.

  1. John Ousterhout, Tcl
  2. James Gosling, Java
  3. Yukihiro Matsumoto, Ruby
  4. Rasmus Lerdorf, PHP
  5. Alain Colmerauer, Prolog
  6. Brad J. Cox, Objective-C
  7. Guido van Rossum, Python
  8. Larry Wall, Perl
  9. John McCarthy, Lisp
  10. Ken Thompson and Dennis Ritchie, C
  11. John George Kemeny and Thomas E. Kurtz, BASIC
  12. Brendan Eich, JavaScript
  13. Niklaus Wirth, Pascal
  14. Martin Odersky, Scala

Exercise 9. Use the information from exercise 8 to say sentences using "was created by", as in the example.

Example: The C++ programming language was created by Bjarne Stroustrup.

Exercise 10. Change the following direct quotations into indirect statements, as in the example.

Example: "C is not a high-level language." —Brian Kernighan -> Brian Kernighan once said that C was not a high level programming language.

  1. "…system programming languages are strongly typed…" —John Ousterhout
  2. "Profanity is the one language all programmers know best. " —Anonymous
  3. "C is quirky, flawed, and an enormous success. " —Dennis Ritchie
  4. "Scripting languages are designed for ‚gluing’ applications. " —John K. Ousterhout
  5. "Ruby is simple in appearance, but is very complex inside, just like our human body. " — Yukihiro Matsumoto
  6. "Writing in C or C++ is like running a chain saw with all the safety guards removed. " —Bob Gray
  7. "C++ is a badly designed and ugly language. " —Richard Stallman
  8. "Within C++, there is a much smaller and cleaner language struggling to get out. " —Bjarne Stroustrup
  9. "C++ is a horrible language. " —Linus Torvalds
  10. "C++ is just an abomination. Everything is wrong with it in every way. " —Jamie Zawinsky
  11. "Java is, in many ways, C++–." —Michael B. Feldman
  12. "Java is C++ without the guns, knives, and clubs. " —James Gosling
  13. "Perl is the most popular web programming language. " —John P. Flynt
  14. "Perl is the ultimate language for text manipulation. " —James M. Kretchmar
  15. "Haskell is faster than C++, more concise than Perl, more regular than Python, more flexible than Ruby, more typeful than C#, more robust than Java…" —Audrey Tang
  16. "Perl is designed to give you several ways to do anything…" —Larry Wall
  17. "Lisp is a programmable programming language. " —John Foderaro
  18. "Smalltalk is dangerous. It is a drug. " —Andy Bower
  19. "Lisp is worth learning for the profound enlightenment experience you will have when you finally get it. " —Eric S. Raymond

Exercise 11. Translate the above quotations into Polish.

Exercise 12. Translate the text into Polish.

Exercise 13. Summarize the text orally using questions from exercise 2 as a plan. Practice until you can say the summary without looking at the text.

Źródła:

Treść tej strony dostępna jest na zasadach licencji CC BY 3.0

Zobacz również:

Autor: Łukasz Piwko

Tłumacz angielskiej i francuskiej literatury specjalistycznej, nauczyciel, wykładowca i maniak technologii programistycznych. Interesuje go wszystko, co związane z programowaniem i tłumaczeniem tekstów na ten temat na język polski. W wolnym czasie czyta Balzaka, słucha muzyki i trenuje karate.

Dyskusja

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *