Obejrzyj poniższy film. Nie przejmuj się, jeśli nie wszystko w nim zrozumiesz. Najważniejsze jest to, aby obejrzeć ten film przed przeczytaniem tekstu. Dzięki temu poznasz sposób wymowy słownictwa zanim zobaczysz je w formie tekstowej. Następnie przeczytaj tekst i wykonaj ćwiczenia pod spodem.
Programming languages
A programming language is a formal language primarily designed to instruct a computer to perform some tasks. Programming languages can be used to create programs to control the behavior of a machine or to express algorithms. They also serve as a framework within which a programmer organizes his ideas about processes.
The description of a programming language is usually split into the two components of syntax (form) and semantics (meaning). The syntax refers to the structure or form of programs. The semantics describes the meaning given to combinations of symbols. Some languages are defined by a specification document (for example, the C programming language is specified by an ISO Standard), while other languages (such as Perl) have a dominant implementation that is treated as a reference.
High-level programming languages
High-level language refers to the higher level of abstraction from machine language. Rather than dealing with registers, memory addresses and call stacks, high-level languages deal with variables, arrays, objects, complex arithmetic or Boolean expressions, subroutines and functions, loops, threads, locks, and other abstract computer science concepts, with a focus on usability over optimal program efficiency. Unlike low-level assembly languages, high-level languages have few, if any, language elements that translate directly into a machine’s native opcodes.
The terms high-level and low-level are inherently relative. Some decades ago, the C language, and similar languages, were most often considered „high-level”, as it supported concepts such as expression evaluation, parametrized recursive functions, and data types and structures, while assembly language was considered "low-level". Today, many programmers might refer to C as low-level, as it lacks a large runtime system (no garbage collection, etc.), basically supports only scalar operations, and provides direct memory addressing.
Assembly language
Assembly language may itself be regarded as a higher level (but often still one-to-one if used without macros) representation of machine code, as it supports concepts such as constants and (limited) expressions, sometimes even variables, procedures, and data structures. Machine code, in its turn, is inherently at a slightly higher level than the microcode or micro-operations used internally in many processors.
Słownictwo
- array
- tablica
- assembly language
- język asemblera
- basically supports only scalar operations
- zasadniczo wykonuje tylko działania skalarne
- Boolean expression
- wyrażenie logiczne, wyrażenie Boole’owskie
- call stack
- stos wywołań
- combination of symbols
- kombinacja symboli
- complex arithmetic
- arytmetyka liczb zespolonych
- computer science concepts
- pojęcia z dziedziny informatyki
- constant
- stała
- data structure
- struktura danych
- data type
- typ danych
- designed
- to służący do; zaprojektowany tak, aby
- direct memory addressing
- bezpośrednie adresowanie pamięci
- dominant implementation
- dominująca implementacja
- expression evaluation
- obliczanie wartości wyrażeń
- few, if any
- niewiele, jeśli w ogóle
- formal language
- język formalny
- framework
- system szkieletowy, szkielet, framework
- function
- funkcja
- garbage collection
- usuwanie nieużywanych obiektów, sprzątanie śmieci
- high-level language
- język wysokiego poziomu
- idea
- pomysł, myśl
- in its turn
- z kolei
- inherently
- naturalnie, z natury
- internally
- wewnętrznie
- ISO Standard
- standard ISO
- level of abstraction
- poziom abstrakcji
- lock
- blokada
- loop
- pętla
- low-level language
- język niskopoziomowy
- machine code
- kod maszynowy
- machine language
- język maszynowy
- macro
- makro
- memory address
- adres w pamięci
- microcode
- mikrokod
- micro-operation
- mikrooperacja
- native opcode
- macierzysty kod operacyjny
- object
- obiekt
- one-to-one
- jeden do jednego
- parametrized recursive function
- parametryzowana funkcja rekurencyjna
- procedures
- procedura
- process
- proces
- processor
- procesor
- program efficiency
- wydajność i efektywność programu
- programming language
- język programowania
- rather than
- raczej niż
- reference implementation
- implementacja wzorowa
- reference
- wzór
- register
- rejestr
- representation
- reprezentacja
- runtime system
- system wykonawczy
- semantics
- semantyka
- slightly
- nieznacznie, nieco
- some decades ago
- kilkadziesiąt lat temu
- specification document
- dokumentacja techniczna, specyfikacja
- subroutine
- podprocedura
- syntax
- składnia
- the description of sth…
- opis czegoś…
- thread
- wątek
- to be regarded as…
- być uważanym za…
- to control the behavior of a machine
- sterować działaniem komputera
- to express algorithms
- wyrażać algorytmy
- to lack
- nie mieć
- to perform some tasks
- wykonywać pewne zadania
- to serve as
- służyć jako
- to support
- obsługiwać
- to translate directly into
- przekładać bezpośrednio na
- unlike
- w odróżniu od
- usability
- użyteczność
- variable
- zmienna
- while
- podczas
Ćwiczenia
1. Odpowiedz na poniższe pytania dotyczące filmu z początku lekcji.
- What are assembly languages sometimes called?
- What is the advantage of low-level languages?
- How are high-level programming languages different from low-level languages?
- What programming languages were used in the first 30 years of programming?
- What type of languages is mostly used nowadays?
- What is the conversion of high-level code into machine code called?
- Are general ideas of compilation and assembly similar or very different?
- What is needed to invoke system calls?
- What is an alternative to compilation?
- What is bytecode?
- What is a virtual machnie?
- How are machnine instructions executed?
- What does the process of interpretation look like?
- What is JIT?
2. Dopasuj słowa w kolumnie A do odpowiedników w kolumnie B.
| formal | address |
| call | type |
| combination of | code |
| deal | standard |
| ISO | addressing |
| Boolean | stack |
| data | with |
| express | symbols |
| runtime | science |
| machine | implementation |
| memory | system |
| memory | abstraction |
| high level of | expression |
| computer | language |
| dominant | algorithm |
3. Odpowiedz na pytania.
- What is a programming language?
- What can programming languages be used to?
- What is usually used to describe a programming language?
- What is syntax of a programming language?
- What is semantics of a programming language?
- How are programming languages defined?
- What is high-level programming language?
- What is low-level programming language?
- How are the terms high-level and low-level related?
- Is the C programming language high-level or low-level?
- Is assembly language high-level or low-level?
4. Uzupełnij zdania według przykładu. Używj konstrukcji „the… of a…”.
…is usually split into syntax and semantics. → The description of a programming language is usually split into syntax and semantics.
- …refers to the structure or form of programs.
- … describes the meaning given to combinations of symbols.
- …defines a programming language.
- …is treated as a reference.
- Programs can be used to control…
- …describes the possible combinations of symbols that form a syntactically correct program.
5. Zapisz początki zdań z poprzedniego ćwiczenia i dokończ je ustnie. Powtórz to ćwiczenie tyle razy, ile trzeba, aby wykonać je bez patrzenia w tekst.
6. Napisz zdania przy użyciu wyrażenia „rather than” oraz słów i wyrażeń podanych w kolumnach, według wzoru. Napisz tyle zdań, ile trzeba, aby wykorzystać każdy element z każdej kolumny.
registers, memory addresses, call stacks
variables, arrays, objects, complex arithmetic, Boolean expressions, subroutines, functions, loops, threads, locks, abstract concepts
Przykład: Rather than dealing with memory addresses, high-level languages deal with variables.
7. Przetłumacz zdania z poprzedniego ćwiczenia na polski.
8. Napisz przynajmniej 10 zdań zaczynających się od słów „Unlike low-level languages, high-level languages…”. Wykorzystaj informacje z ćwiczenia 6.
Przykład: Unlike low-level assembly languages, high-level languages use variables.
9. Przetłumacz zdania z poprzedniego ćwiczenia na polski.
10. Zmień zdania ustnie według przykładu.
Przykład:In C, you can use expression evaluation. → The C programming language supports expression evaluation.
- In C, you can use parametrized functions
- In C, you can use recursive functions.
- In C, you can use data structures.
- In C, you can use data types.
- In C, you can use scalar operations.
- In C, you can use direct memory addressing.
- In C, you can use constants.
- In C, you can use macros.
- In C, you can use variables.
- In C, you can use arrays.
- In C, you can use Boolean expressions.
- In C, you can use subroutines.
- In C, you can use functions.
- In C, you can use loops.
- In C, you can use arithmetic operations.
- In C, you can use the addition operator.
- In C, you can use the multiplication operator.
- In C, you can use the division operator.
- In C, you can use the subtraction operator.
- In C, you can use the modulo operator.
11. Dokończ zdania, zastępując podane przymiotniki przysłówkami.
- High-level languages have few elements that translate (direct) into a machine’s native opcodes.
- The terms high-level and low-level are (inherent) relative.
- Machine code is (inherent) at a slightly higher level than the microcode.
- Micro-operations are used (internal) in many processors.
- The description of a programming language is (usual) split into two components.
- A programming language is a formal language (primary) designed to instruct a computer to perform some tasks.

