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.
- What is one way to approach the question of what is a programming paradigm?
- What is procedural code?
- What is the relation between state and actions on it in procedural programming?
- What is the relation between state and actions on it in object-oriented programming?
- What properties do statements have in functional programming?
- What does it mean that state is immutable in functional programming?
- What can functions return in functional programming?
- Is one line of code enough to understand the paradigm used?
- What does paradigm describe?
- What geometric figure is used by the author to explain the different paradigms?
- Is class-oriented programming the opposite of functional programming?
- What other concept does the author use to explain the relations between different paradigms?
- What types of code comprise any nontrivial application?
- What is wrong with mixing different paradigms in one code base?
Computer programming basics
Computer programming (coding) is the craft of translating computing problems into reliable, robust, useful, portable, maintainable, and efficient source code, which can be interpreted or compiled into an executable program by a computing system or compiler to perform a meaningful task.
Source code is written in one of many programming languages using a style often referred to as a programming paradigm which serves as a way of building the structure and elements of computer programs. Common programming paradigms are imperative programming, declarative programming, functional programming, object-oriented programming, procedural programming, logic programming and symbolic programming.
Using markup languages (such as HTML) is generally not considered "programming." Nevertheless, many markup languages allow inclusion of scripts, e.g. many HTML documents contain JavaScript.
Computer programming is one part of a much larger discipline known as software engineering, which includes several different aspects of making software including design, construction and quality control. Other activities involved in the process of programming include analysis, generating algorithms, verification of requirements of algorithms including their correctness and resources consumption, testing, debugging, and implementation of algorithms in a target programming language.
A special type of programming that is considered one of the most difficult styles of programming is concurrent programming, a technique that provides for the execution of operations concurrently — either within a single computer, or across a number of systems. In the latter case, the term distributed computing is used. Multiprocessor machines achieve better performance by taking advantage of this kind of programming.
Concurrent computing is related to but distinct from parallel computing. In parallel programming, single tasks are split into a number of subtasks that can be computed relatively independently and then aggregated to form a single coherent solution. Parallel programming is most effective for tasks that can be easily broken down into independent tasks such as purely mathematical problems, e.g., factorisation. By contrast, concurrent computing consists of process lifetimes overlapping, but execution need not happen at the same instant.
Vocabulary
- achieve
- osiągać
- activities involved in the process of programming
- czynności składające się na proces programowania
- algorithm
- algorytm
- analysis
- analiza
- aspect
- aspekt
- by contrast
- natomiast
- coding
- pisanie kodu (źródłowego), kodowanie
- coherent solution
- spójne rozwiązanie
- compiler
- kompilator
- computer program
- program komputerowy
- computer programming
- programowanie komputerowe
- concurrent computing
- programowanie współbieżne
- construction
- budowa, konstrukcja
- correctness
- poprawność
- debugging
- usuwanie błędów, diagnozowanie, debugowanie
- declarative
- programming programowanie deklaracyjne
- design
- projekt
- distributed
- computing obliczenia rozproszone
- efficient
- wydajny
- executable program
- program wykonywalny
- execution of operations
- wykonywanie działań, wykonywanie operacji
- factorisation
- rozkład na czynniki
- functional programming
- programowanie funkcyjne
- HTML document
- dokument HTML
- imperative programming
- programowanie imperatywne
- implementation
- implementacja
- in the latter case
- w drugim przypadku
- independently
- niezależnie
- is generally not considered…
- zasadniczo nie jest uważany za…
- kind
- rodzaj
- lifetime
- okres istnienia
- logic programming
- programowanie logiczne
- maintainable
- łatwy w obsłudze serwisowej, łatwy w zarządzaniu
- markup language
- język znacznikowy
- meaningful
- istotny, sensowny, znaczący
- multiprocessor machine
- komputer wieloprocesorowy
- need not
- nie musi
- nevertheless
- niemniej, jednakże
- object-oriented programming
- programowanie obiektowe
- one of many
- jeden z wielu
- one part of sth
- jedna część czegoś
- parallel programming
- programowanie równoległe
- performance
- sprawność, wydajność
- portable
- przenośny
- procedural programming
- programowanie proceduralne
- programming paradigm
- paradygmat programowania
- purely mathematical problem
- problem czysto matematyczny
- quality control
- kontrola jakości
- related to but distinct from
- powiązany z, ale odrębny od
- reliable
- niezawodny
- resources consumption
- zużycie zasobów
- robust
- solidny, niezawodny
- script
- skrypt
- software engineering
- inżynieria oprogramowania
- source code
- kod źródłowy
- subtask
- podzadanie
- such as
- taki jak
- symbolic programming
- programowanie symboliczne
- target language
- język docelowy
- testing
- testowanie
- the craft of…
- sztuka…
- to aggregate
- gromadzić, zbierać, łączyć
- to be considered…
- być uważanym za…
- to break sth down into
- podzielić coś na…
- to compile sth into…
- skompilować coś do postaci…
- to happen at the same instant
- wydarzyć się w tym samym momencie
- to interpret
- interpretować
- to overlap
- nakładać się, częściowo się pokrywać
- to perform a task
- wykonać zadanie
- to provide for
- uwzględnić, przewidzieć
- to serve as a way of + ing
- służyć do…
- to split
- podzielić
- to take advantage of sth
- wykorzystać coś
- useful
- przydatny
- verification of requirements
- weryfikacja wymagań
- within
- w, wewnątrz
Exercises
Exercise 1. Match the words in column A with their partners in column B.
computer | distinct from |
source | instant |
executable | machine |
programming | code |
HTML | control |
software | computing |
quality | solution |
distributed | engineering |
multiprocessor | language |
coherent | programming |
at the same | program |
related to but | document |
Exercise 2. Answer the following questions.
- What is computer programming?
- What is source code?
- What is programming paradigm?
- What common programming paradigms do you know?
- Is using markup languages generally considered programming?
- What is software engineering?
- What activities are involved in the process of programming?
- What is concurrent programming?
- What is parallel programming?
- What is the difference between concurrent programming and parallel programming?
Exercise 3. Write sentences using the expression „the craft of” as in the example.
reliable source code -> Coding is the craft of translating computing problems into reliable source code.
- robust source code
- useful source code
- portable source code
- maintainable source code
- efficient source code
- correct source code
- meaningful source code
- testable source code
- flexible source code
- legible source code
- secure source code
- stable source code
Exercise 4. Kiedyś Jeremy Keith był łaskaw podzielić się ze światem następującą myślą: „In Fact, Java is to JavaScript as ham is to hamster”. Wymyśl podobne porównania po angielsku lub po polsku i podziel się nimi w komentarzu na dole strony.
Exercise 5. Translate the sentences into English as in the example.
Jednym z etapów procesu programowania jest projektowanie programu. -> One of activities involved in the process of programming is the designing of the program.
- Jednym z etapów procesu programowania jest analiza algorytmów.
- Jednym z etapów procesu programowania jest weryfikacja wymagań.
- Jednym z etapów procesu programowania jest budowanie algorytmów.
- Jednym z etapów procesu programowania jest sprawdzanie poprawności algorytmów.
- Jednym z etapów procesu programowania jest weryfikacja zużycia zasobów przez algorytmy.
- Jednym z etapów procesu programowania jest testowanie kodu.
- Jednym z etapów procesu programowania jest debugowanie kodu.
- Jednym z etapów procesu programowania jest implementowanie algorytmów w docelowym języku.
- Jednym z etapów procesu programowania jest kontrola jakości programu.
- Jednym z etapów procesu programowania jest sprawdzanie poziomu zużycia zasobów.
Exercise 6. Write sentences as in the example using the expressions provided below.
concurrent execution, efficient algorithms, parallel execution, efficient data structures, efficient implementations of algorithms, efficient implementations of data structures, efficient compiler, efficient interpreter, low-level instructions, more efficient instructions
Better performance of a program can be achieved by using concurrent execution.
Exercise 7. Transform and write the sentences from exercise 6 as in the example.
Better performance of a program can be achieved by using concurrent execution. ->Computers achieve better performance by taking advantage of concurrent execution.
Exercise 8. Transform and write the sentences from exercise 6 as in the example.
Better performance of a program can be achieved by using concurrent execution. -> Concurrent execution can be used to improve the performance of a program.
Exercise 9. Do the exercises 6, 7, and 8 orally. Repeat until you can say the sentences looking only at the list of expressions provided in exercise 6.
Exercise 10. Write sentences about programming paradigms following the example.
object-oriented paradigm -> A programmer need not use the object-oriented paradigm all the time. -> A programmer doesn’t need to use the object-oriented paradigm all the time.
- imperative programming
- declarative programming
- functional programming
- procedural programming
- logic programming
- symbolic programming
Exercise 11. Repeat the exercise 10 orally.
Exercise 12. Read the text and complete the sentences.
- Parallel programming is a technique that…
- Concurrent programming is a technique that…
- Parallel programming is most effective for tasks that…
- In parallel programming, single tasks are…
- The term distributed computing is used to describe…
- Parallel computing is related to but…
- Multiprocessor machines achieve better performance by…
- Parallel subtasks can be…
- Parallel subtasks are then…
- Factorisation is a…
Exercise 13. Change the following adjectives into nouns as in the example. Can you translate them into Polish?
portable -> portability
- maintainable
- testable
- flexible
- legible
- stable
- computable
- suitable
- applicable
- acceptable
- valuable
- sustainable
- available
- usable
- addressable
Exercise 14. Oral drill. Change the word "use" in the sentences into the expression "take advantage of".
- Computer programmer can use object-oriented techniques.
- Computer programmer can use imperative programming techniques.
- Computer programmer can use declarative programming techniques.
- Computer programmer can use functional programming techniques.
- Computer programmer can use procedural programming techniques.
- Computer programmer can use logic programming techniques.
- Computer programmer can use symbolic programming techniques.
- Webmaster can use HTML.
- Computer programmer can use parallel programming techniques.
- Computer programmer can use concurrent programming techniques.
Exercise 15. Translate the text into Polish.
Exercise 16. Summarize the text orally using questions from exercise 2 as an outline. Practice until you can say the summary without looking at the text.
Źródła:
- http://yearofcodes.tumblr.com/what-is-programming
- https://en.wikipedia.org/wiki/Programming_paradigm
- https://en.wikipedia.org/wiki/Computer_programming
- https://en.wikibooks.org/wiki/Computer_Programming
- https://en.wikibooks.org/wiki/Programming_Languages/Concurrent_Languages
- Introduction to Software Development, J. Pérez López i L. Ribas i Xirgo
Treść tej strony jest dostępna na zasadach licencji CC BY-SA 3.0
Zobacz również:
- Lekcja 10. Programming tools
- Lekcja 9. Programming languages. Part 2
- Lekcja 8. Programming languages. Part 1
- Lekcja 6. Matrices
- Lekcja 5. Geometric shapes
- Lekcja 4. Positional notation
- Lekcja 3. Other types of numbers and operations
- Lekcja 2. Natural numbers
- Lekcja 1. Algebra
- Angielski dla programistów