SlideShare a Scribd company logo
CSL101 : Introduction to
computers and programming
Instructor : Neelima Gupta
Course contents
• Concept of an algorithm; termination and correctness.
Algorithms to programs: specification, top-down
development and stepwise refinement. Use of high
level programming language for the systematic
development of programs. Introduction to the design
and implementation of correct, efficient and
maintainable programs. Introduction to computer
architecture; memory, ALU, CPU, I/O devices.
Introduction to system software; operating systems,
compilers and multi-user environment.
The syllabus is available at
• http://www.cse.
iitd.ernet.in/cse/newcurriculum-contents/ne
wcourses.html#CSL101
Course Text Book
• Introduction to JAVA Programming, Fourth
Edition, by Daniel Liang, Prentice Hall
• Foundations of computing by Sinha and
Sinha, BPB Publications
What is a Computer?
• Computer
– Device capable of performing computations and making
logical decisions
– Computers process data under the control of sets of
instructions called computer programs
• Hardware
– Various devices comprising a computer
– Keyboard, screen, mouse, disks, memory, CD-ROM, and
processing units
• Software
– Programs that run on a computer
Computer Organization
• Six logical units in every computer:
– Input unit
• Obtains information from input devices (keyboard, mouse)
– Output unit
• Outputs information (to screen, to printer, to control other devices)
– Memory unit
• Rapid access, low capacity, stores input information
– Arithmetic and logic unit (ALU)
• Performs arithmetic calculations and logic decisions
– Central processing unit (CPU)
• Supervises and coordinates the various components of the computer
– Secondary storage unit
• Cheap, long-term, high-capacity storage
• Stores inactive programs
Computer Architecture
A Computer Consists of
• a central processing unit (CPU) consists of
– an arithmetic/logic unit (ALU) where math and logic operations
are performed,
– a control unit which directs most operations by providing timing
and control signals,
– and registers that provide short-term data storage and management
facilities.
• a memory unit that stores instructions and data, and
• input (e.g. keyboard, mouse, microphone, disk drive, etc.) and output
(e.g. monitor, status indicator lights, speakers, disk drive, etc.) units
that are used to transmit data into and out of the computer.
ALU
• A : The type of operation that the ALU needs to
perform is determined by signals from the control
unit .
• B: The data can come either from the input unit, or
• C: from the memory unit.
• D: Results of the operation can either be
transferred back to the memory unit or
• E: directly to the output unit .
The memory unit - or random
access memory (RAM) -
• stores instructions and/or data.
• Memory is divided into an array of "boxes" each containing a byte of
information.
– A byte consists of 8 bits.
– A bit (binary digit) is either 0 (OFF) or 1 (ON).
– The memory unit also serves as a storage for intermediate and final results
of arithmetic operations.
• F : Control signal (a read or a write operation).
• G : A location in memory
• H : Input to memory data lines when the control signal J is enabled.
• I : Memory to the output unit when the control signal L is enabled.
Control Unit
• contains logic and timing circuits that generate the appropriate signals
necessary to execute each instruction in a program.
• It fetches an instruction from memory by sending an address (G) and
• a read command (F) to the memory unit.
• The instruction word(s) stored at the memory location specified by the
address is then transferred to the control unit (K).
• After decoding this instruction, the control unit transmits the
appropriate signals to the other units in order to execute the specified
operation.
• This sequence of fetch and execute is repeated by the control unit until
the computer is either powered off or reset.
Common Softwares
• Operating System
• Compilers
• Assemblers
• Interpreters
What Is an Operating System?
• An interface between the hardware and the
user.
• Provides an easy and efficient use of the
system resources.
Evolution of Operating Systems
• Single_user Batch processing
– Do only one job or task at a time
• Early Operating systems
– Manage transitions between jobs (minimizing transition time
between jobs)
– Increased throughput
• Amount of work computers process
• Multiprogramming
– Computer resources are shared by many jobs or tasks (users still
waited a long time for their output)
• Timesharing (access computers via terminals)
– Computer runs a small portion of one user’s job then moves on to
service the next user
Programming Language :
Definition
• A vocabulary and set of grammatical rules
for instructing a computer to perform
specific tasks.
Evolution of Programming languages
– First Generation : Machine languages
• Strings of numbers giving machine specific instructions
• Example:
+1300042774
+1400593419
+1200274027
– Second Generation : Assembly languages
• English-like abbreviations representing elementary computer operations
(translated via assemblers)
– Example:
LOAD BASEPAY
ADD OVERPAY
STORE GROSSPAY
– Third Generation : High-level languages
• Codes similar to everyday English
• Use mathematical notations (translated via compilers)
• Example: grossPay = basePay + overTimePay
PL hierarchy
What does the computer
understand?
• Computer only understands machine
language instructions.
Assembler
• Instructions written in assembly language
must be translated to machine language
instructions :
– Assembler does this
• One to one translation : One AL instruction
is mapped to one ML instruction.
• AL instructions are CPU specific.
Compiler
• Instructions written in high-level language also
must be translated to machine language
instructions :
– Compiler does this
• Generally one to many translation : One HL
instruction is mapped to many ML instruction.
• HL instructions are not CPU specific but compiler
is.
Translation from HLL to ML
Interpreter
• An interpreter translates high-level instructions into an
intermediate form, which it then executes. In contrast, a compiler
translates high-level instructions directly into machine language.
• Compiled programs generally run faster than interpreted
programs.
• The advantage of an interpreter, however, is that it does not need
to go through the compilation stage during which machine
instructions are generated. This process can be time-consuming if
the program is long. The interpreter, on the other hand, can
immediately execute high-level programs. For this reason,
interpreters are sometimes used during the development of a
program, when a programmer wants to add small sections at a
time and test them quickly.
Different types of High-level PL
• Weakly typed/strongly typed
• Structured
• And many other types
Typed Languages
• Type information was added to programs to
improve efficiency.
– For ex. An integer addition is performed more
efficiently than floating point addition.
– Hence it is more advantageous to declare the
value/variable as integer whenever it is
possible.
Weakly Typed/Strongly Typed
Language
• A strongly-typed programming language is one in
which each type of data (such as integer,
character, hexadecimal, packed decimal, and so
forth) is predefined as part of the programming
language and all constants or variables defined for
a given program must be described with one of the
data types.
• Certain operations may be allowable only with
certain data types. The language compiler enforces
the data typing and use compliance.
Strongly Typed Language contd..
Different definitions are given for a language
to be strongly typed and if that condition is
not defined by a particular language it is
said to weakly typed in that context.
For example..
1. A language is strongly typed if it contains compile-
time checks for type constraint violations. If all
checking is deferred to run time, it is weakly typed.
2. A language is strongly typed if it contains compile-
or run-time checks for type constraint violations. If
no checking is done, it is weakly typed.
3. A language is strongly typed if conversions
between different types are forbidden. If such
conversions are allowed, it is weakly typed.
More Examples..
4. A language is strongly typed if conversions
between different types must be indicated
explicitly. If implicit conversions are performed,
it is weakly typed.
5. A language is strongly typed if there is no
language-level way to disable or evade the
type system. If there are C-style casts or other
type-evasive mechanisms, it is weakly typed.
Where does C fit in?
• For example, under definitions 3,4 and 5 the
C language is weakly typed; — with
definitions 1 and 2 it is open for further
debate since C does perform type checks for
compound types but not for scalar or array
types.
C++/Java?
• C++ and Java are stronger typed than C.
Typed Languages contd..
• An advantage of strong data typing is that it
imposes a rigorous set of rules on a programmer
and thus guarantees a certain consistency of
results.
• A disadvantage is that it prevents the programmer
from inventing a data type not anticipated by the
developers of the programming language and it
limits how "creative" one can be in using a given
data type.
Structured Programming
• Structured programming
– Disciplined approach to writing programs
– Clear, easy to test and debug and easy to modify
• Structured programming is hard and takes
time to master
Structured Programming contd..
• A technique for organizing and coding computer
programs in which a hierarchy of modules is used,
each having a single entry and a single exit point,
and in which control is passed downward through
the structure without unconditional branches to
higher levels of the structure.
• Three types of control flow are used: sequential,
test, and iteration
Structured programming
• Only the following code structures are used to
write programs:
1. Sequence of sequentially executed statements.
2. Conditional execution of statements (i.e., "if"
statements).
3. Looping.
4. Structured SubRoutine calls (e.g., 'gosub' but not
'goto').
Structure Programming contd..
In particular, the following language usage is
forbidden:
• "GoTo" statements.
• "break" or "continue" out of the middle of loops.
• Multiple exit points to a
function/procedure/subroutine (i.e., multiple
"return" statements).
• Multiple entry points to a
function/procedure/subroutine.
Structured Programming contd..
• Structured Programming is generally a non-
issue when doing ModularProgramming or
ObjectOrientedProgramming as it's
assumed that individual methods are
structured.
Structured VS unstructured
Languages
• Structured languages, such as Pascal, Ada
and dBASE, force the programmer to write
a structured program.
• Unstructured languages such as
FORTRAN, COBOL and BASIC require
discipline on the part of the programmer to
write a structured program.
Structured VS unstructured
Languages
• Unstructured languages define control flow largely in terms of a
GOTO command that transfers execution to a label in code. Structured
programming languages provide constructs (often called "if-then-
else", "switch", "unless", "while", "until", and "for") for creating a
variety of loops and conditional branches of execution, although they
may also provide a GOTO to reduce excessive nesting of cascades of
"if" structures, especially for handling exceptional conditions.
• Strictly speaking, in a structured programming language, any code
structure should have only one entry point and one point of exit; many
languages such as C allow multiple paths to a structure's exit (such as
"continue", "break", and "return"), which can bring both advantages
and disadvantages in readability.
The Key Software Trend:
Object Technology
• Objects
– Reusable software components that model items in the
real world
– Meaningful software units
• Date objects, time objects, paycheck objects, invoice
objects, audio objects, video objects, file objects, record
objects, etc.
• Any noun can be represented as an object
– More understandable, better organized, and easier to
maintain than procedural programming
• Java source code files (files with a .java extension)
are compiled into a format called bytecode (files with
a .class extension), which can then be executed by a
Java interpreter. Compiled Java code can run on most
computers because Java interpreters and runtime
environments, known as Java Virtual Machines
(VMs), exist for most operating systems, including
UNIX, the Macintosh OS, and Windows. Bytecode
can also be converted directly into machine language
instructions by a just-in-time compiler (JIT).

More Related Content

Similar to Computer system literature pre_lect1.ppt (20)

PPTX
Python Programming-Skill Course - unit-i.pptx
KavithaDonepudi
 
PPTX
Introductions to Design Logic.pptx IT level
gadisaadamu101
 
PPT
CHAPTER-1.ppt
Tekle12
 
PPTX
Programming languages,compiler,interpreter,softwares
Nisarg Amin
 
PPTX
programming for problem solving-1 unit -1 ppt.pptx
prathima304
 
PPTX
Programming for Problem Solving
Sukhendra Singh
 
PPTX
Python-L1.pptx
DukeCalvin
 
PPT
introduction to computer programming CPPL1.ppt
biniyamtiktok
 
PPTX
Embedded c c++ programming fundamentals master
Hossam Hassan
 
PPTX
Lecture 1 Introduction.pptx hfjsh huwhf uwej wiuehfi w
muhammadumairsoftwar
 
PPTX
Program Logic and Design
Froilan Cantillo
 
PPT
Topic 1 B C programming exercises one.ppt
Carlos701746
 
PDF
Module4.pdf ,...................................
chetanreddy2212
 
PPTX
Unit 1 part1 Introduction of Compiler Design.pptx
Neelkaranbind
 
PPTX
Principles of Intro to Programming Languages
nnillas140014tc
 
PDF
sege.pdf
SegezzBrian
 
PDF
Introduction to computer programming
VanessaBuensalida
 
PPTX
1. Introduction to Computer System (1).pptx
AkshatMuke1
 
PDF
C_Dayyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy1.pdf
amanpathak160605
 
Python Programming-Skill Course - unit-i.pptx
KavithaDonepudi
 
Introductions to Design Logic.pptx IT level
gadisaadamu101
 
CHAPTER-1.ppt
Tekle12
 
Programming languages,compiler,interpreter,softwares
Nisarg Amin
 
programming for problem solving-1 unit -1 ppt.pptx
prathima304
 
Programming for Problem Solving
Sukhendra Singh
 
Python-L1.pptx
DukeCalvin
 
introduction to computer programming CPPL1.ppt
biniyamtiktok
 
Embedded c c++ programming fundamentals master
Hossam Hassan
 
Lecture 1 Introduction.pptx hfjsh huwhf uwej wiuehfi w
muhammadumairsoftwar
 
Program Logic and Design
Froilan Cantillo
 
Topic 1 B C programming exercises one.ppt
Carlos701746
 
Module4.pdf ,...................................
chetanreddy2212
 
Unit 1 part1 Introduction of Compiler Design.pptx
Neelkaranbind
 
Principles of Intro to Programming Languages
nnillas140014tc
 
sege.pdf
SegezzBrian
 
Introduction to computer programming
VanessaBuensalida
 
1. Introduction to Computer System (1).pptx
AkshatMuke1
 
C_Dayyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy1.pdf
amanpathak160605
 

Recently uploaded (9)

PPTX
CP_CorpOverview_2025-check point 2025.pptx
gary518500
 
PDF
HUAWEI MOBILE PHONE IMPORTED FROM CHINA TO THAILAND REPORT.pdf.pdf
youyou851038
 
PPTX
Computer based speed tracking passively.pptx
jn4bmprgvt
 
DOCX
What Is Zoning Map Software and Why It Matters for Communities
riffatparveenseo
 
PPTX
Dental-Occlusion-Assihgvjvvbngnment.pptx
mkurdi133
 
PPTX
White and Blue Illustrated Technology Cybersecurity Presentation.pptx
sysybituin27
 
PDF
4 Tips for Reducing Tool Deflection in CNC Machining.pdf
Content Swap
 
PDF
Switchboard Maintenance Checklist with eAuditor Audits & Inspections
eAuditor Audits & Inspections
 
PDF
Company Introduction of XY Power in EV Charging Segment
Sam Geoff
 
CP_CorpOverview_2025-check point 2025.pptx
gary518500
 
HUAWEI MOBILE PHONE IMPORTED FROM CHINA TO THAILAND REPORT.pdf.pdf
youyou851038
 
Computer based speed tracking passively.pptx
jn4bmprgvt
 
What Is Zoning Map Software and Why It Matters for Communities
riffatparveenseo
 
Dental-Occlusion-Assihgvjvvbngnment.pptx
mkurdi133
 
White and Blue Illustrated Technology Cybersecurity Presentation.pptx
sysybituin27
 
4 Tips for Reducing Tool Deflection in CNC Machining.pdf
Content Swap
 
Switchboard Maintenance Checklist with eAuditor Audits & Inspections
eAuditor Audits & Inspections
 
Company Introduction of XY Power in EV Charging Segment
Sam Geoff
 
Ad

Computer system literature pre_lect1.ppt

  • 1. CSL101 : Introduction to computers and programming Instructor : Neelima Gupta
  • 2. Course contents • Concept of an algorithm; termination and correctness. Algorithms to programs: specification, top-down development and stepwise refinement. Use of high level programming language for the systematic development of programs. Introduction to the design and implementation of correct, efficient and maintainable programs. Introduction to computer architecture; memory, ALU, CPU, I/O devices. Introduction to system software; operating systems, compilers and multi-user environment.
  • 3. The syllabus is available at • http://www.cse. iitd.ernet.in/cse/newcurriculum-contents/ne wcourses.html#CSL101
  • 4. Course Text Book • Introduction to JAVA Programming, Fourth Edition, by Daniel Liang, Prentice Hall • Foundations of computing by Sinha and Sinha, BPB Publications
  • 5. What is a Computer? • Computer – Device capable of performing computations and making logical decisions – Computers process data under the control of sets of instructions called computer programs • Hardware – Various devices comprising a computer – Keyboard, screen, mouse, disks, memory, CD-ROM, and processing units • Software – Programs that run on a computer
  • 6. Computer Organization • Six logical units in every computer: – Input unit • Obtains information from input devices (keyboard, mouse) – Output unit • Outputs information (to screen, to printer, to control other devices) – Memory unit • Rapid access, low capacity, stores input information – Arithmetic and logic unit (ALU) • Performs arithmetic calculations and logic decisions – Central processing unit (CPU) • Supervises and coordinates the various components of the computer – Secondary storage unit • Cheap, long-term, high-capacity storage • Stores inactive programs
  • 8. A Computer Consists of • a central processing unit (CPU) consists of – an arithmetic/logic unit (ALU) where math and logic operations are performed, – a control unit which directs most operations by providing timing and control signals, – and registers that provide short-term data storage and management facilities. • a memory unit that stores instructions and data, and • input (e.g. keyboard, mouse, microphone, disk drive, etc.) and output (e.g. monitor, status indicator lights, speakers, disk drive, etc.) units that are used to transmit data into and out of the computer.
  • 9. ALU • A : The type of operation that the ALU needs to perform is determined by signals from the control unit . • B: The data can come either from the input unit, or • C: from the memory unit. • D: Results of the operation can either be transferred back to the memory unit or • E: directly to the output unit .
  • 10. The memory unit - or random access memory (RAM) - • stores instructions and/or data. • Memory is divided into an array of "boxes" each containing a byte of information. – A byte consists of 8 bits. – A bit (binary digit) is either 0 (OFF) or 1 (ON). – The memory unit also serves as a storage for intermediate and final results of arithmetic operations. • F : Control signal (a read or a write operation). • G : A location in memory • H : Input to memory data lines when the control signal J is enabled. • I : Memory to the output unit when the control signal L is enabled.
  • 11. Control Unit • contains logic and timing circuits that generate the appropriate signals necessary to execute each instruction in a program. • It fetches an instruction from memory by sending an address (G) and • a read command (F) to the memory unit. • The instruction word(s) stored at the memory location specified by the address is then transferred to the control unit (K). • After decoding this instruction, the control unit transmits the appropriate signals to the other units in order to execute the specified operation. • This sequence of fetch and execute is repeated by the control unit until the computer is either powered off or reset.
  • 12. Common Softwares • Operating System • Compilers • Assemblers • Interpreters
  • 13. What Is an Operating System? • An interface between the hardware and the user. • Provides an easy and efficient use of the system resources.
  • 14. Evolution of Operating Systems • Single_user Batch processing – Do only one job or task at a time • Early Operating systems – Manage transitions between jobs (minimizing transition time between jobs) – Increased throughput • Amount of work computers process • Multiprogramming – Computer resources are shared by many jobs or tasks (users still waited a long time for their output) • Timesharing (access computers via terminals) – Computer runs a small portion of one user’s job then moves on to service the next user
  • 15. Programming Language : Definition • A vocabulary and set of grammatical rules for instructing a computer to perform specific tasks.
  • 16. Evolution of Programming languages – First Generation : Machine languages • Strings of numbers giving machine specific instructions • Example: +1300042774 +1400593419 +1200274027 – Second Generation : Assembly languages • English-like abbreviations representing elementary computer operations (translated via assemblers) – Example: LOAD BASEPAY ADD OVERPAY STORE GROSSPAY – Third Generation : High-level languages • Codes similar to everyday English • Use mathematical notations (translated via compilers) • Example: grossPay = basePay + overTimePay
  • 18. What does the computer understand? • Computer only understands machine language instructions.
  • 19. Assembler • Instructions written in assembly language must be translated to machine language instructions : – Assembler does this • One to one translation : One AL instruction is mapped to one ML instruction. • AL instructions are CPU specific.
  • 20. Compiler • Instructions written in high-level language also must be translated to machine language instructions : – Compiler does this • Generally one to many translation : One HL instruction is mapped to many ML instruction. • HL instructions are not CPU specific but compiler is.
  • 22. Interpreter • An interpreter translates high-level instructions into an intermediate form, which it then executes. In contrast, a compiler translates high-level instructions directly into machine language. • Compiled programs generally run faster than interpreted programs. • The advantage of an interpreter, however, is that it does not need to go through the compilation stage during which machine instructions are generated. This process can be time-consuming if the program is long. The interpreter, on the other hand, can immediately execute high-level programs. For this reason, interpreters are sometimes used during the development of a program, when a programmer wants to add small sections at a time and test them quickly.
  • 23. Different types of High-level PL • Weakly typed/strongly typed • Structured • And many other types
  • 24. Typed Languages • Type information was added to programs to improve efficiency. – For ex. An integer addition is performed more efficiently than floating point addition. – Hence it is more advantageous to declare the value/variable as integer whenever it is possible.
  • 25. Weakly Typed/Strongly Typed Language • A strongly-typed programming language is one in which each type of data (such as integer, character, hexadecimal, packed decimal, and so forth) is predefined as part of the programming language and all constants or variables defined for a given program must be described with one of the data types. • Certain operations may be allowable only with certain data types. The language compiler enforces the data typing and use compliance.
  • 26. Strongly Typed Language contd.. Different definitions are given for a language to be strongly typed and if that condition is not defined by a particular language it is said to weakly typed in that context.
  • 27. For example.. 1. A language is strongly typed if it contains compile- time checks for type constraint violations. If all checking is deferred to run time, it is weakly typed. 2. A language is strongly typed if it contains compile- or run-time checks for type constraint violations. If no checking is done, it is weakly typed. 3. A language is strongly typed if conversions between different types are forbidden. If such conversions are allowed, it is weakly typed.
  • 28. More Examples.. 4. A language is strongly typed if conversions between different types must be indicated explicitly. If implicit conversions are performed, it is weakly typed. 5. A language is strongly typed if there is no language-level way to disable or evade the type system. If there are C-style casts or other type-evasive mechanisms, it is weakly typed.
  • 29. Where does C fit in? • For example, under definitions 3,4 and 5 the C language is weakly typed; — with definitions 1 and 2 it is open for further debate since C does perform type checks for compound types but not for scalar or array types.
  • 30. C++/Java? • C++ and Java are stronger typed than C.
  • 31. Typed Languages contd.. • An advantage of strong data typing is that it imposes a rigorous set of rules on a programmer and thus guarantees a certain consistency of results. • A disadvantage is that it prevents the programmer from inventing a data type not anticipated by the developers of the programming language and it limits how "creative" one can be in using a given data type.
  • 32. Structured Programming • Structured programming – Disciplined approach to writing programs – Clear, easy to test and debug and easy to modify • Structured programming is hard and takes time to master
  • 33. Structured Programming contd.. • A technique for organizing and coding computer programs in which a hierarchy of modules is used, each having a single entry and a single exit point, and in which control is passed downward through the structure without unconditional branches to higher levels of the structure. • Three types of control flow are used: sequential, test, and iteration
  • 34. Structured programming • Only the following code structures are used to write programs: 1. Sequence of sequentially executed statements. 2. Conditional execution of statements (i.e., "if" statements). 3. Looping. 4. Structured SubRoutine calls (e.g., 'gosub' but not 'goto').
  • 35. Structure Programming contd.. In particular, the following language usage is forbidden: • "GoTo" statements. • "break" or "continue" out of the middle of loops. • Multiple exit points to a function/procedure/subroutine (i.e., multiple "return" statements). • Multiple entry points to a function/procedure/subroutine.
  • 36. Structured Programming contd.. • Structured Programming is generally a non- issue when doing ModularProgramming or ObjectOrientedProgramming as it's assumed that individual methods are structured.
  • 37. Structured VS unstructured Languages • Structured languages, such as Pascal, Ada and dBASE, force the programmer to write a structured program. • Unstructured languages such as FORTRAN, COBOL and BASIC require discipline on the part of the programmer to write a structured program.
  • 38. Structured VS unstructured Languages • Unstructured languages define control flow largely in terms of a GOTO command that transfers execution to a label in code. Structured programming languages provide constructs (often called "if-then- else", "switch", "unless", "while", "until", and "for") for creating a variety of loops and conditional branches of execution, although they may also provide a GOTO to reduce excessive nesting of cascades of "if" structures, especially for handling exceptional conditions. • Strictly speaking, in a structured programming language, any code structure should have only one entry point and one point of exit; many languages such as C allow multiple paths to a structure's exit (such as "continue", "break", and "return"), which can bring both advantages and disadvantages in readability.
  • 39. The Key Software Trend: Object Technology • Objects – Reusable software components that model items in the real world – Meaningful software units • Date objects, time objects, paycheck objects, invoice objects, audio objects, video objects, file objects, record objects, etc. • Any noun can be represented as an object – More understandable, better organized, and easier to maintain than procedural programming
  • 40. • Java source code files (files with a .java extension) are compiled into a format called bytecode (files with a .class extension), which can then be executed by a Java interpreter. Compiled Java code can run on most computers because Java interpreters and runtime environments, known as Java Virtual Machines (VMs), exist for most operating systems, including UNIX, the Macintosh OS, and Windows. Bytecode can also be converted directly into machine language instructions by a just-in-time compiler (JIT).