100% found this document useful (10 votes)
31 views

Instant Download (Ebook) Python Debugging for AI, Machine Learning, and Cloud Computing by Dmitry Vostokov ISBN 9781484297452, 1484297458 PDF All Chapters

The document promotes various ebooks available for download, including 'Python Debugging for AI, Machine Learning, and Cloud Computing' by Dmitry Vostokov, which focuses on debugging techniques in Python for AI and cloud environments. It outlines the book's content, including pattern-oriented debugging approaches, case studies, and challenges specific to Python debugging in AI and cloud computing. Additional ebooks on topics like cooking, mathematics, and SAT preparation are also mentioned with links for access.

Uploaded by

tebykarmie
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (10 votes)
31 views

Instant Download (Ebook) Python Debugging for AI, Machine Learning, and Cloud Computing by Dmitry Vostokov ISBN 9781484297452, 1484297458 PDF All Chapters

The document promotes various ebooks available for download, including 'Python Debugging for AI, Machine Learning, and Cloud Computing' by Dmitry Vostokov, which focuses on debugging techniques in Python for AI and cloud environments. It outlines the book's content, including pattern-oriented debugging approaches, case studies, and challenges specific to Python debugging in AI and cloud computing. Additional ebooks on topics like cooking, mathematics, and SAT preparation are also mentioned with links for access.

Uploaded by

tebykarmie
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 65

Download Full Version ebook - Visit ebooknice.

com

(Ebook) Python Debugging for AI, Machine Learning,


and Cloud Computing by Dmitry Vostokov ISBN
9781484297452, 1484297458

https://ebooknice.com/product/python-debugging-for-ai-
machine-learning-and-cloud-computing-55714196

Click the button below to download

DOWLOAD EBOOK

Discover More Ebook - Explore Now at ebooknice.com


Instant digital products (PDF, ePub, MOBI) ready for you
Download now and discover formats that fit your needs...

Start reading on any device today!

(Ebook) Biota Grow 2C gather 2C cook by Loucas, Jason;


Viles, James ISBN 9781459699816, 9781743365571,
9781925268492, 1459699815, 1743365578, 1925268497
https://ebooknice.com/product/biota-grow-2c-gather-2c-cook-6661374

ebooknice.com

(Ebook) Matematik 5000+ Kurs 2c Lärobok by Lena


Alfredsson, Hans Heikne, Sanna Bodemyr ISBN 9789127456600,
9127456609
https://ebooknice.com/product/matematik-5000-kurs-2c-larobok-23848312

ebooknice.com

(Ebook) SAT II Success MATH 1C and 2C 2002 (Peterson's SAT


II Success) by Peterson's ISBN 9780768906677, 0768906679

https://ebooknice.com/product/sat-ii-success-
math-1c-and-2c-2002-peterson-s-sat-ii-success-1722018

ebooknice.com

(Ebook) Master SAT II Math 1c and 2c 4th ed (Arco Master


the SAT Subject Test: Math Levels 1 & 2) by Arco ISBN
9780768923049, 0768923042
https://ebooknice.com/product/master-sat-ii-math-1c-and-2c-4th-ed-
arco-master-the-sat-subject-test-math-levels-1-2-2326094

ebooknice.com
(Ebook) Cambridge IGCSE and O Level History Workbook 2C -
Depth Study: the United States, 1919-41 2nd Edition by
Benjamin Harrison ISBN 9781398375147, 9781398375048,
1398375144, 1398375047
https://ebooknice.com/product/cambridge-igcse-and-o-level-history-
workbook-2c-depth-study-the-united-states-1919-41-2nd-edition-53538044

ebooknice.com

(Ebook) Fundamentals of Trace and Log Analysis: A Pattern-


Oriented Approach to Monitoring, Diagnostics, and
Debugging by Dmitry Vostokov ISBN 9781484298954,
9781484298961, 1484298969, 1484298950
https://ebooknice.com/product/fundamentals-of-trace-and-log-analysis-
a-pattern-oriented-approach-to-monitoring-diagnostics-and-
debugging-53480612
ebooknice.com

(Ebook) Machine Learning Q and AI: 30 Essential Questions


and Answers on Machine Learning and AI by Sebastian
Raschka
https://ebooknice.com/product/machine-learning-q-and-ai-30-essential-
questions-and-answers-on-machine-learning-and-ai-55695142

ebooknice.com

(Ebook) Pragmatic AI: An Introduction to Cloud-Based


Machine Learning by Noah Gift ISBN 9780134863863,
0134863860
https://ebooknice.com/product/pragmatic-ai-an-introduction-to-cloud-
based-machine-learning-7365114

ebooknice.com

(Ebook) Machine Learning Q and AI: 30 Essential Questions


and Answers on Machine Learning and AI by Sebastian
Raschka ISBN 9781718503779, 1718503776
https://ebooknice.com/product/machine-learning-q-and-ai-30-essential-
questions-and-answers-on-machine-learning-and-ai-55643358

ebooknice.com
Dmitry Vostokov

Python Debugging for AI, Machine


Learning, and Cloud Computing
A Pattern-Oriented Approach
Dmitry Vostokov
Dalkey, Dublin, Ireland

ISBN 978-1-4842-9744-5 e-ISBN 978-1-4842-9745-2


https://doi.org/10.1007/978-1-4842-9745-2

© Dmitry Vostokov 2024

Apress Standard

The use of general descriptive names, registered names, trademarks,


service marks, etc. in this publication does not imply, even in the
absence of a specific statement, that such names are exempt from the
relevant protective laws and regulations and therefore free for general
use.

The publisher, the authors, and the editors are safe to assume that the
advice and information in this book are believed to be true and accurate
at the date of publication. Neither the publisher nor the authors or the
editors give a warranty, expressed or implied, with respect to the
material contained herein or for any errors or omissions that may have
been made. The publisher remains neutral with regard to jurisdictional
claims in published maps and institutional affiliations.

This Apress imprint is published by the registered company APress


Media, LLC, part of Springer Nature.
The registered company address is: 1 New York Plaza, New York, NY
10004, U.S.A.
To Ekaterina, Alexandra, Kirill, and Maria
Introduction
Python is the dominant language used in AI and machine learning with
data and pipelines in cloud environments. Besides debugging Python
code in popular IDEs, notebooks, and command-line debuggers, this
book also includes coverage of native OS interfacing (Windows and
Linux) necessary to understand, diagnose, and debug complex software
issues.
The book begins with an introduction to pattern-oriented software
diagnostics and debugging processes that, before doing Python
debugging, diagnose problems in various software artifacts such as
memory dumps, traces, and logs. Next, it teaches various debugging
patterns using Python case studies that model abnormal software
behavior. Further, it covers Python debugging specifics in cloud native
and machine learning environments. It concludes with how recent
advances in AI/ML can help in Python debugging. The book also goes
deep for case studies when there are environmental problems, crashes,
hangs, resource spikes, leaks, and performance degradation. It includes
tracing and logging besides memory dumps and their analysis using
native WinDbg and GDB debuggers.
This book is for those who wish to understand how Python
debugging is and can be used to develop robust and reliable AI,
machine learning, and cloud computing software. It uses a novel
pattern-oriented approach to diagnosing and debugging abnormal
software structure and behavior. Software developers, AI/ML
engineers, researchers, data engineers, MLOps, DevOps, and anyone
who uses Python will benefit from this book.
Source Code: All source code used in this book can be downloaded
from github.com/Apress/Python-Debugging-for-AI-
Machine-Learning-and-Cloud-Computing.
Any source code or other supplementary material referenced by the
author in this book is available to readers on GitHub. For more detailed
information, please visit https://www.apress.com/gp/services/source-
code.
Table of Contents
Chapter 1:​Fundamental Vocabulary
Process
Thread
Stack Trace (Backtrace, Traceback)
Symbol Files
Module
Memory Dump
Crash
Hang
Summary
Chapter 2:​Pattern-Oriented Debugging
The History of the Idea
Patterns and Analysis Patterns
Development Process
Development Patterns
Debugging Process and Patterns
Elementary Diagnostics Patterns
Debugging Analysis Patterns
Debugging Architecture Patterns
Debugging Design Patterns
Debugging Implementation Patterns
Debugging Usage Patterns
Debugging Presentation Patterns
Summary
Chapter 3:​Elementary Diagnostics Patterns
Functional Patterns
Use-Case Deviation
Non-Functional Patterns
Crash
Hang
Counter Value
Error Message
Summary
Chapter 4:​Debugging Analysis Patterns
Paratext
State Dump
Counter Value
Stack Trace Patterns
Stack Trace
Runtime Thread
Managed Stack Trace
Source Stack Trace
Stack Trace Collection
Stack Trace Set
Exception Patterns
Managed Code Exception
Nested Exception
Exception Stack Trace
Software Exception
Module Patterns
Module Collection
Not My Version
Exception Module
Origin Module
Thread Patterns
Spiking Thread
Active Thread
Blocked Thread
Blocking Module
Synchronization Patterns
Wait Chain
Deadlock
Livelock
Memory Consumption Patterns
Memory Leak
Handle Leak
Case Study
Summary
Chapter 5:​Debugging Implementation Patterns
Overview of Patterns
Break-Ins
Code Breakpoint
Code Trace
Scope
Variable Value
Type Structure
Breakpoint Action
Usage Trace
Case Study
Elementary Diagnostics Patterns
Debugging Analysis Patterns
Debugging Implementation Patterns
Summary
Chapter 6:​IDE Debugging in the Cloud
Visual Studio Code
WSL Setup
Cloud SSH Setup
Case Study
Summary
Chapter 7:​Debugging Presentation Patterns
Python Debugging Engines
Case Study
Suggested Presentation Patterns
Summary
Chapter 8:​Debugging Architecture Patterns
The Where?​Category
In Papyro
In Vivo
In Vitro
In Silico
In Situ
Ex Situ
The When?​Category
Live
JIT
Postmortem
The What?​Category
Code
Data
Interaction
The How?​Category
Software Narrative
Software State
Summary
Chapter 9:​Debugging Design Patterns
CI Build Case Study
Elementary Diagnostics
Analysis
Architecture
Design
Implementation
Data Processing Case Study
Elementary Diagnostics
Analysis
Architecture
Design
Implementation
Summary
Chapter 10:​Debugging Usage Patterns
Exact Sequence
Scripting
Debugger Extension
Abstract Command
Space Translation
Lifting
Gestures
Summary
Chapter 11:​Case Study:​Resource Leaks
Elementary Diagnostics
Debugging Analysis
Debugging Architecture
Debugging Implementation
Summary
Chapter 12:​Case Study:​Deadlock
Elementary Diagnostics
Debugging Analysis
Debugging Architecture
Exceptions and Deadlocks
Summary
Chapter 13:​Challenges of Python Debugging in Cloud Computing
Complex Distributed Systems
Granularity of Services
Communication Channels Overhead
Inter-Service Dependencies
Layers of Abstraction
Opaque Managed Services
Serverless and Function as a Service
Container Orchestration Platforms
Continuous Integration/​Continuous Deployment
Pipeline Failures
Rollbacks and Versioning
Immutable Infrastructure
Diversity of Cloud Service Models
Infrastructure as a Service
Platform as a Service
Software as a Service
Evolving Cloud Platforms
Adapting to Changes
Staying Updated
Environment Parity
Library and Dependency Disparities
Configuration Differences
Underlying Infrastructure Differences
Service Variabilities
Limited Visibility
Transient Resources
Log Management
Monitoring and Alerting
Latency and Network Issues
Network Instabilities
Service-to-Service Communication
Resource Leaks and Performance
Resource Starvation
Concurrency Issues
Race Conditions
Deadlocks
Security and Confidentiality
Debugger Access Control Restrictions
Sensitive Data Exposure
Limited Access
Cost Implications
Extended Sessions
Resource Provisioning and Deprovisioning
Data Transfer and Storage Fees
State Management
Stateful Services
Data Volume
Limited Tooling Compatibility
Versioning Issues
Deprecations and Changes
SDK and Library Updates
Real-time Debugging and User Experience
External Service Dependencies
Dependency Failures
Rate Limiting and Quotas
Asynchronous Operations
Flow Tracking
Error Propagation
Scaling and Load Challenges
Load-Based Issues
Resource Contention
Multi-Tenancy Issues
Resource Contention
Data Security
Reliability and Redundancy Issues
Service Failures
Data Durability
Summary
Chapter 14:​Challenges of Python Debugging in AI and Machine
Learning
The Nature of Defects in AI/​ML
Complexity and Abstraction Layers
Non-Determinism and Reproducibility
Large Datasets
High-Dimensional Data
Long Training Times
Real-Time Operation
Model Interpretability​
Hardware Challenges
Version Compatibility and Dependency Hell
Data Defects
Inconsistent and Noisy Data
Data Leakage
Imbalanced Data
Data Quality
Feature Engineering Flaws
Algorithmic and Model-Specific Defects
Gradients, Backpropagation, and Automatic Differentiation
Hyperparameter Tuning
Overfitting and Underfitting
Algorithm Choice
Deep Learning Defects
Activation and Loss Choices
Learning Rate
Implementation Defects
Tensor Shapes
Hardware Limitations and Memory
Custom Code
Performance Bottlenecks
Testing and Validation
Unit Testing
Model Validation
Cross-Validation
Metrics Monitoring
Visualization for Debugging
TensorBoard
Matplotlib and Seaborn
Model Interpretability​
Logging and Monitoring
Checkpoints
Logging
Alerts
Error Tracking Platforms
Collaborative Debugging
Forums and Communities
Peer Review
Documentation, Continuous Learning, and Updates
Maintaining Documentation
Library Updates
Continuous Learning
Case Study
Summary
Chapter 15:​What AI and Machine Learning Can Do for Python
Debugging
Automated Error Detection
Intelligent Code Fix Suggestions
Interaction Through Natural Language Queries
Visual Debugging Insights
Diagnostics and Anomaly Detection
Augmenting Code Reviews
Historical Information Analysis and Prognostics
Adaptive Learning and Personalized Debugging Experience
Test Suite Integration and Optimization
Enhanced Documentation and Resource Suggestions
Problem Modeling
Generative Debugging Strategy
Help with In Papyro Debugging
Summary
Chapter 16:​The List of Debugging Patterns
Elementary Diagnostics Patterns
Debugging Analysis Patterns
Debugging Architecture Patterns
Debugging Design Patterns
Debugging Implementation Patterns
Debugging Usage Patterns
Debugging Presentation Patterns
Index
About the Author
Dmitry Vostokov
is an internationally recognized expert,
speaker, educator, scientist, inventor, and
author. He founded the pattern-oriented
software diagnostics, forensics, and
prognostics discipline (Systematic
Software Diagnostics) and Software
Diagnostics Institute (DA+TA:
DumpAnalysis.org + TraceAnalysis.org).
Vostokov has also authored multiple
books on software diagnostics, anomaly
detection and analysis, software, and
memory forensics, root cause analysis
and problem-solving, memory dump
analysis, debugging, software trace and log analysis, reverse
engineering, and malware analysis. He has over thirty years of
experience in software architecture, design, development, and
maintenance in various industries, including leadership, technical, and
people management roles. In his spare time, he presents multiple topics
on Debugging.TV and explores software narratology and its further
development as narratology of things and diagnostics of things (DoT),
software pathology, and quantum software diagnostics. His current
interest areas are theoretical software diagnostics and its mathematical
and computer science foundations, application of formal logic, artificial
intelligence, machine learning, and data mining to diagnostics and
anomaly detection, software diagnostics engineering and diagnostics-
driven development, diagnostics workflow, and interaction. Recent
interest areas also include cloud native computing, security,
automation, functional programming, applications of category theory to
software development and big data, and artificial intelligence
diagnostics.
About the Technical Reviewer
Krishnendu Dasgupta
is currently the Head of Machine
Learning at Mondosano GmbH, leading
data science initiatives focused on
clinical trial recommendations and
advanced patient health profiling
through disease and drug data. Prior to
this role, he co-founded DOCONVID AI, a
startup that leveraged applied AI and
medical imaging to detect lung
abnormalities and neurological
disorders.
With a strong background in
computer science engineering,
Krishnendu has more than a decade of experience in developing
solutions and platforms using applied machine learning. His
professional trajectory includes key positions at prestigious
organizations such as NTT DATA, PwC, and Thoucentric.
Krishnendu’s primary research interests include applied AI for
graph machine learning, medical imaging, and decentralized privacy-
preserving machine learning in healthcare. He also had the opportunity
to participate in the esteemed Entrepreneurship and Innovation
Bootcamp at the Massachusetts Institute of Technology, cohort of 2018
batch.
Beyond his professional endeavors, Krishnendu actively dedicates
his time to research, collaborating with various research NGOs and
universities worldwide. His focus is on applied AI and ML.
© The Author(s), under exclusive license to APress Media, LLC, part of Springer Nature 2024
D. Vostokov, Python Debugging for AI, Machine Learning, and Cloud Computing
https://doi.org/10.1007/978-1-4842-9745-2_1

1. Fundamental Vocabulary
Dmitry Vostokov1

(1) Dalkey, Dublin, Ireland

Debugging complex software issues in machine learning and cloud computing


environments requires not only the knowledge of the Python language and its interpreter
(or compiler), plus standard and external libraries, but also necessary and relevant
execution environment and operating system internals. In this chapter, you will review
some necessary fundamentals from software diagnostics and debugging languages to
have the same base level of understanding for the following chapters. In this book, I
assume that you are familiar with the Python language and its runtime environment.

Process
A Python script is interpreted by compiling it into bytecode and then executing it, or it
can even be precompiled into an application program. In both cases, this interpreter file
or the compiled application is an executable program (in Windows, it may have a .exe
extension) that references some operating system libraries (.dll in Windows and .so in
Linux). This application can be loaded into computer memory several times; each time, a
separate process is created with its own resources and unique process ID (PID, also
TGID), as shown in Figure 1-1. The process may also have a parent process that created it,
with a parent process ID (PPID).
Figure 1-1 Two python3 processes with two different PIDs
To illustrate, I executed the code in Listing 1-1 on both Windows and Linux twice.

import time

def main():
foo()

def foo():
bar()

def bar():
while True:
time.sleep(1)

if __name__ == "__main__":
main()
Listing 1-1 A Simple Script to Model Running Python Code

Figure 1-2 shows two processes on Windows.


Figure 1-2 Two running python3.11.exe processes on Windows
On Linux, you can also see two processes when you execute the same script in two
separate terminals:

~/Chapter1$ which python3


/usr/bin/python3

~/Chapter1$ ps -a
PID TTY TIME CMD
17 pts/0 00:00:00 mc
60 pts/2 00:00:00 python3
61 pts/1 00:00:00 python3
80 pts/3 00:00:00 ps

Note The operating system controls hardware and processes/threads. From a high
level, it is just a collection of processes with the operating system kernel as a process
too.

Thread
From an operating system perspective, a process is just a memory container for a Python
interpreter, its code, and data. But the interpreter code needs to be executed, for example,
to interpret the Python bytecode. This unit of execution is called a thread. A process may
have several such units of execution (several threads, the so-called multithreaded
application). Each thread has its own unique thread ID (TID, also LWP or SPID), as shown
in Figure 1-3. For example, one thread may process user interface events and others may
do complex calculations in response to UI requests, thus making the UI responsive. On
Windows, thread IDs are usually different from process IDs, but in Linux, the thread ID of
the main thread is the same as the process ID for a single-threaded process.

Figure 1-3 Two python3 processes with different numbers of threads


To model multithreading, I executed the code in Listing 1-2 on both Windows and
Linux.

import time
import threading

def thread_func():
foo()

def main():
t1 = threading.Thread(target=thread_func)
t1.start()
t2 = threading.Thread(target=thread_func)
t2.start()
t1.join()
t2.join()
def foo():
bar()

def bar():
while True:
time.sleep(1)

if __name__ == "__main__":
main()
Listing 1-2 A Simple Script to Model Multiple Threads
Figure 1-4 shows that in Windows, you can see 11 threads at the beginning (this
number later changes to 7 and then to 5). You see that the number of threads may be
greater than expected.

Figure 1-4 The number of threads in the running python3.11.exe process on Windows

In Linux, you can see the expected number of threads – 3:

~/Chapter1$ ps -aT
PID SPID TTY TIME CMD
17 17 pts/0 00:00:00 mc
45 45 pts/2 00:00:00 python3
45 46 pts/2 00:00:00 python3
45 47 pts/2 00:00:00 python3
54 54 pts/1 00:00:00 ps
Stack Trace (Backtrace, Traceback)
I should distinguish Python source code tracebacks (which we call managed stack traces)
and unmanaged (native) ones from the Python compiler and interpreter that compiles to
and executes Python byte code. You will see this distinction in some chapters for several
case studies and how to get both traces. But, for now, I will just show the difference.
Listing 1-3 shows managed stack trace. Listing 1-4 shows the corresponding unmanaged
Linux stack trace with debugging symbols (the most recent call first). Listing 1-5 shows
the corresponding unmanaged Windows stack trace without debugging symbols (the
most recent call first).

Traceback (most recent call last):


File "process.py", line 14, in <module>
main()
File "process.py", line 4, in main
foo()
File "process.py", line 7, in foo
bar()
File "process.py", line 11, in bar
time.sleep(1)
Listing 1-3 Managed Stack Trace from the Execution of the Python Script from Listing 1-1

#0 0x00007f6bc84e6b97 in __GI___select (nfds=0, readfds=0x0,


writefds=0x0, exceptfds=0x0, timeout=0x7ffc60288fe0)
at ../sysdeps/unix/sysv/linux/select.c:41
#1 0x00000000004e8965 in pysleep (secs=<optimized out>) at
../Modules/timemodule.c:1829
#2 time_sleep (self=<optimized out>, obj=<optimized out>,
self=<optimized out>, obj=<optimized out>)
at ../Modules/timemodule.c:371
#3 0x00000000005d8711 in _PyMethodDef_RawFastCallKeywords
(method=0x82dbe0 <time_methods+288>,
self=<module at remote 0x7f6bc800dc78>,
args=0x7f6bc80c4550, nargs=<optimized out>, kwnames=<optimized
out>)
at ../Objects/call.c:644
#4 0x000000000054b330 in _PyCFunction_FastCallKeywords
(kwnames=<optimized out>, nargs=<optimized out>,
args=0x7f6bc80c4550, func=<built-in method sleep of module
object at remote 0x7f6bc800dc78>)
at ../Objects/call.c:730
#5 call_function (pp_stack=0x7ffc60289150, oparg=<optimized
out>, kwnames=<optimized out>) at ../Python/ceval.c:4568
#6 0x00000000005524cd in _PyEval_EvalFrameDefault (f=
<optimized out>, throwflag=<optimized out>)
at ../Python/ceval.c:3093
#7 0x00000000005d91fc in PyEval_EvalFrameEx (throwflag=0,
f=Frame 0x7f6bc80c43d8, for file process.py, line 11, in
bar ()) at ../Python/ceval.c:547
#8 function_code_fastcall (globals=<optimized out>, nargs=
<optimized out>, args=<optimized out>, co=<optimized out>)
at ../Objects/call.c:283
#9 _PyFunction_FastCallKeywords (func=<optimized out>, stack=
<optimized out>, nargs=<optimized out>,
kwnames=<optimized out>) at ../Objects/call.c:408
#10 0x000000000054e5ac in call_function (kwnames=0x0, oparg=
<optimized out>, pp_stack=<synthetic pointer>)
at ../Python/ceval.c:4616
#11 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=
<optimized out>) at ../Python/ceval.c:3124
#12 0x00000000005d91fc in PyEval_EvalFrameEx (throwflag=0,
f=Frame 0x7f6bc80105e8, for file process.py, line 7, in foo
()) at ../Python/ceval.c:547
#13 function_code_fastcall (globals=<optimized out>, nargs=
<optimized out>, args=<optimized out>, co=<optimized out>)
at ../Objects/call.c:283
#14 _PyFunction_FastCallKeywords (func=<optimized out>, stack=
<optimized out>, nargs=<optimized out>,
kwnames=<optimized out>) at ../Objects/call.c:408
--Type <RET> for more, q to quit, c to continue without paging-
-
#15 0x000000000054e5ac in call_function (kwnames=0x0, oparg=
<optimized out>, pp_stack=<synthetic pointer>)
at ../Python/ceval.c:4616
#16 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=
<optimized out>) at ../Python/ceval.c:3124
#17 0x00000000005d91fc in PyEval_EvalFrameEx (throwflag=0,
f=Frame 0x205ade8, for file process.py, line 4, in main ())
at ../Python/ceval.c:547
#18 function_code_fastcall (globals=<optimized out>, nargs=
<optimized out>, args=<optimized out>, co=<optimized out>)
at ../Objects/call.c:283
#19 _PyFunction_FastCallKeywords (func=<optimized out>, stack=
<optimized out>, nargs=<optimized out>,
kwnames=<optimized out>) at ../Objects/call.c:408
#20 0x000000000054e5ac in call_function (kwnames=0x0, oparg=
<optimized out>, pp_stack=<synthetic pointer>)
at ../Python/ceval.c:4616
#21 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=
<optimized out>) at ../Python/ceval.c:3124
#22 0x000000000054bcc2 in PyEval_EvalFrameEx (throwflag=0,
f=Frame 0x7f6bc80ab9f8, for file process.py, line 14, in
<module> ()) at ../Python/ceval.c:547
#23 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=
<optimized out>, locals=<optimized out>,
args=<optimized out>, argcount=<optimized out>,
kwnames=0x0, kwargs=0x0, kwcount=<optimized out>, kwstep=2,
defs=0x0, defcount=0, kwdefs=0x0, closure=0x0, name=0x0,
qualname=0x0) at ../Python/ceval.c:3930
#24 0x000000000054e0a3 in PyEval_EvalCodeEx (closure=0x0,
kwdefs=0x0, defcount=0, defs=0x0, kwcount=0, kws=0x0,
argcount=0, args=0x0, locals=<optimized out>, globals=
<optimized out>, _co=<optimized out>)
at ../Python/ceval.c:3959
#25 PyEval_EvalCode (co=<optimized out>, globals=<optimized
out>, locals=<optimized out>) at ../Python/ceval.c:524
#26 0x0000000000630ce2 in run_mod (mod=<optimized out>,
filename=<optimized out>,
globals={'__name__': '__main__', '__doc__': None,
'__package__': None, '__loader__':
<SourceFileLoader(name='__main__', path='process.py') at remote
0x7f6bc803dfd0>, '__spec__': None, '__annotations__': {},
'__builtins__': <module at remote 0x7f6bc8102c28>, '__file__':
'process.py', '__cached__': None, 'time': <module at remote
0x7f6bc800dc78>, 'main': <function at remote 0x7f6bc80791e0>,
'foo': <function at remote 0x7f6bc7f69c80>, 'bar': <function at
remote 0x7f6bc7f69d08>},
locals={'__name__': '__main__', '__doc__': None,
'__package__': None, '__loader__':
<SourceFileLoader(name='__main__', path='process.py') at remote
0x7f6bc803dfd0>, '__spec__': None, '__annotations__': {},
'__builtins__': <module at rem--Type <RET> for more, q to quit,
c to continue without paging--
ote 0x7f6bc8102c28>, '__file__': 'process.py', '__cached__':
None, 'time': <module at remote 0x7f6bc800dc78>, 'main':
<function at remote 0x7f6bc80791e0>, 'foo': <function at remote
0x7f6bc7f69c80>, 'bar': <function at remote 0x7f6bc7f69d08>},
flags=<optimized out>, arena=<optimized out>) at
../Python/pythonrun.c:1035
#27 0x0000000000630d97 in PyRun_FileExFlags (fp=0x2062390,
filename_str=<optimized out>, start=<optimized out>,
globals={'__name__': '__main__', '__doc__': None,
'__package__': None, '__loader__':
<SourceFileLoader(name='__main__', path='process.py') at remote
0x7f6bc803dfd0>, '__spec__': None, '__annotations__': {},
'__builtins__': <module at remote 0x7f6bc8102c28>, '__file__':
'process.py', '__cached__': None, 'time': <module at remote
0x7f6bc800dc78>, 'main': <function at remote 0x7f6bc80791e0>,
'foo': <function at remote 0x7f6bc7f69c80>, 'bar': <function at
remote 0x7f6bc7f69d08>},
locals={'__name__': '__main__', '__doc__': None,
'__package__': None, '__loader__':
<SourceFileLoader(name='__main__', path='process.py') at remote
0x7f6bc803dfd0>, '__spec__': None, '__annotations__': {},
'__builtins__': <module at remote 0x7f6bc8102c28>, '__file__':
'process.py', '__cached__': None, 'time': <module at remote
0x7f6bc800dc78>, 'main': <function at remote 0x7f6bc80791e0>,
'foo': <function at remote 0x7f6bc7f69c80>, 'bar': <function at
remote 0x7f6bc7f69d08>}, closeit=1, flags=0x7ffc6028989c) at
../Python/pythonrun.c:988
#28 0x00000000006319ff in PyRun_SimpleFileExFlags
(fp=0x2062390, filename=<optimized out>, closeit=1,
flags=0x7ffc6028989c) at ../Python/pythonrun.c:429
#29 0x000000000065432e in pymain_run_file (p_cf=0x7ffc6028989c,
filename=<optimized out>, fp=0x2062390)
at ../Modules/main.c:427
#30 pymain_run_filename (cf=0x7ffc6028989c,
pymain=0x7ffc60289970) at ../Modules/main.c:1627
#31 pymain_run_python (pymain=0x7ffc60289970) at
../Modules/main.c:2877
#32 pymain_main (pymain=<optimized out>, pymain=<optimized
out>) at ../Modules/main.c:3038
#33 0x000000000065468e in _Py_UnixMain (argc=<optimized out>,
argv=<optimized out>) at ../Modules/main.c:3073
#34 0x00007f6bc841a09b in __libc_start_main (main=0x4bc560
<main>, argc=2, argv=0x7ffc60289ab8, init=<optimized out>,
fini=<optimized out>, rtld_fini=<optimized out>,
stack_end=0x7ffc60289aa8) at ../csu/libc-start.c:308
#35 0x00000000005e0e8a in _start () at ../Modules/main.c:797
Listing 1-4 Unmanaged Linux Backtrace from the Execution of the Python Script from Listing 1-1 with
Debugging Symbols

00 00000090`7e1ef0a8
00007ff9`8c44fcf9 ntdll!NtWaitForMultipleObjects+0x14
01 00000090`7e1ef0b0
00007ff9`8c44fbfe KERNELBASE!WaitForMultipleObjectsEx+0xe9
02 00000090`7e1ef390
00007ff8`ef943986 KERNELBASE!WaitForMultipleObjects+0xe
03 00000090`7e1ef3d0
00007ff8`ef94383d python311!PyTraceBack_Print_Indented+0x35a
04 00000090`7e1ef430
00007ff8`ef81a6b2 python311!PyTraceBack_Print_Indented+0x211
Random documents with unrelated
content Scribd suggests to you:
Pikku Anna oli tosin tottunut jäämään yksiksensä kotiin, mutta
kuitenkin oli hänellä ikävä aina yksin jäädessänsä. Kaikkein ikävintä
oli se, kun hän aina tunsi voimansa vähäisiksi, jos mihin vähänkin
suurempaa ponnistusta vaadittiin. Hän ihmetteli usein, miksi hän
aina oli väsynyt, sairas ja kykenemätön kaikkeen työhön, kun
sitävastoin toiset lapset, kuten Matleena-muorin pojat, olivat aina
terveitä ja voivat myllätä ja vääntää kuin karhut. Tätä kysymystä hän
mietti joka päivä ja kaikesta sydämestään halusi saada siihen
vastausta. Oi, miten hän toivoi kerran joltain ihmiseltä saavansa
kysellä kaikkea, mitä hän yksiksensä oli mietiskellyt, ja jota hän ei
itse ymmärtänyt selittää! Koulunopettaja tai pappi varmaan osaisi
selittää, mutta koska hän voisi heitä tavata? Kouluun pääsemistä ei
hän voinut ajatella, sillä koulu oli liian kaukana, ja vanhaa rovastia
hän voisi vielä vähemmin tavata.

Eniten vaivasi häntä kuitenkin se, että hän tunsi olevansa


kasvatusvanhempainsa rasituksena. Matleena-muori olikin hoitanut
häntä pienuudesta pitäin kuin omaa lastaan — äiti, Matleenan
sukulainen, oli hänet jo pienenä orvoksi jättänyt. Anna tiesi, että
hänen kasvatusäitinsä oli saanut valvoa monta yötä silloin, kun hän
tuskia kärsien oli sairaana maannut, ja että hänen kasvatusisänsä oli
saanut panna monta vaivalla ansaitsemaansa ropoa lääkkeisiin,
joista ei kuitenkaan ollut mitään apua. Ja siksipä hänellä oli sydämen
suru siitä, kun ei millään tavalla voinut osottaa kiitollisuuttaan
kasvatusvanhemmilleen eikä edes mitenkään auttaa heitä
kotiaskareissa. Hän kykeni ainoastaan hoitamaan mökin nuorinta
poikaa tämän kätkyessä maatessa, mutta pian poika tulisi niin
raskaaksi, ettei hän jaksanut tätä nostella.

Miten mielellään hän olisi suonut olevansa tuon pikku pojan


asemassa, kun Matleena aina otti tämän syliinsä hellitelläkseen!
Sellaista hyväilyä ei Matleena muille osottanut, mutta eihän hänellä
ollut aikaa sellaisiin lapsellisuuksiin. Sen Anna tiesi, mutta kuitenkin
hän aina kaihosi Matleenan hyväilyä, vaikkei siitä mitään puhunut.
Muutoin ei hänellä ollut mitään valittamista — hänelle ei näet oltu
yhtään pahaa sanaa sanottu, jos ei erityistä ystävällisyyttäkään
osotettu. Mutta hän ei voinut sille mitään, että hänen pikku
sydämensä aina kaipasi hellyyttä ja ystävällistä hymyilyä. Se teki
hänet surumieliseksi, sillä hän oli aivan varma siitä, että hänen
raihnaisuutensa ja kykenemättömyytensä teki hänet vastenmieliseksi
Matleena-muorille.

Kaikki nämä ajatukset lensivät taaskin tytön mieleen, kun hän


portaalla päiväpaisteessa istui katsellen metsään meneviä
marjamiehiä. Kotona ei olisi ollut niin ikävää ja kolkkoa, jos edes
"Kellokas" tai porsaat tai mökin neljä kirjavaa kanaa olisivat olleet
häntä seurallaan huvittamassa. Mutta nyt olivat kaikki nämä Annan
ystävät toinen toisensa peräytä viety ainaiseksi pois. Ne oli myyty,
vaihdettu leiväksi, sillä nälkä pyrki tuohon pieneen tupaan. Isä
makasi sairashuoneessa kaupungissa ja pitkä pouta oli polttanut
ruohot "Kellokkaan" laitumelta. Viimeiseen saakka koki Matleena-
muori säilyttää "Kellokasta", sillä hänen oli vaikea monen lapsen
kanssa tulla maidotta toimeen, mutta viimein se täytyi pakosta
myydä, kun pouta yhä jatkui eikä sille ollut muuta ruokaa antaa.
Sinä päivänä, kun "Kellokas" vietiin, itki Matleena. Ennen ei ollut
Anna nähnyt hänen koskaan itkevän. Sen vuoksi se oli koskenut
kovin hänen sydämeensä. Hän ei ollut silloin voinut olla muitten
parissa, vaan oli hiipinyt hiljaa metsänlaitaan, istautunut nurmikolle,
itkenyt katkerasti ja rukoillut kädet ristissä Jumalaa auttamaan heitä
hädässä. Hän oli varma siitä, että hyvä, suuri Jumala, joka asui
pilvien yläpuolella ja joka oli kaiken luonut, kuulisi hänen
rukouksensa. Oi, jospa hän kuulisi!
Tätä Anna taaskin uudelleen mietti portaalla haaveksien
istuessaan. Jospa hän osaisi edes lukea isän suuresta raamatusta,
jota säilytettiin hyllyllä! Hän koetteli muistella, mitä hän oli kuullut
vanhimman pojan, Matin, raamatunhistoriasta lukevan Jumalasta ja
Jeesuksesta, saadaksensa varmuutta siitä, pitikö hän lapsista. Ja kun
hän samassa muisti sen kaksitoistavuotiaan tytön, jonka Jeesus oli
parantanut, sai hän lohdutuksen mielellensä. Ja täällä
yksinäisyydessä, jossa ei yhtään ihmistä ollut häntä näkemässä eikä
kuulemassa, alkoi hän hartaasti rukoilla Jumalalta apua. Ja kuta
enemmän hän rukoili, tunsi hän ikäänkuin sitä lähemmäksi Jumalaa
tulevansa. Lopulta tuli hän hyvin iloiseksi ja varmaksi siitä, että hän,
joka oli parantanut tuon kaksitoistavuotiaan tytön, hän myöskin
tietäisi keinon häntä auttaakseen sellaiseksi, että hän voisi Matleena-
muorille jotain apua tehdä.

Ilta alkoi lähestyä, ja kun Anna muisti, että oli vähän puuroa, joka
hänen tuli lämmittää itselleen illalliseksi, meni hän sitä varten
keräämään risuja mäeltä. Hänen piti näet itse hoitaa itsensä, sillä
marjamiehet tulisivat kotiin vasta seuraavan päivän aamupuolella.

Mutta mikä ihme loisti tuolta ruskeitten havunoksien alta? Ahaa, se


oli varmaankin kananpesä, jota Matleena-muori oli turhaan etsinyt.
Oli näet tiettyä, että kirjava kana oli ollut jossain piilossa hautomassa
muniaan, vaikkei pesää oltu löydetty.

Hän otti munat varovasti, vei ne tupaan ja pani ruokakaappiin.


Mutta niitä asetellessaan kuului hänen korviinsa kummallinen
äännähdys, joka häntä kovin säikäytti. Erään munan sisästä kuului
heikko naksutus. Hän kuunteli sitä liikkumattomana sykkivin
sydämin. Kas — nyt kuului se taas! — tik, pik… A—i, siellä on
varmaankin pikku poikanen, joka pyrkii ulos!
Hämillään tuumaili hän, mitä olisi tehtävä. Äkkiä muisti hän, että
muna tarvitsee lämpöä. Vapisevin käsin teki hän tulen lieteen ja
istautui sitte sen eteen, kallis löytö kädessään. Siinä istuen unohti
hän yksinäisyyden ja ajan. Kun yö saapui ja hiillos sammui liedessä,
valtasi hänet uni. Hän hiipi sänkyyn suuren turkin alle nukkumaan ja
asetti aarteensa poveansa vastaan. Sanomaton ilo täytti hänen
mielensä, kun hän siunausta lukien painoi silmänsä kiinni.

*****

Aurinko paistaa helotti aamulla tupaan — suoraan pikku Annan


silmiin.

Pi — pi — pi kuului hänen kainalostaan ja pari pientä jalkaa


räpisteli nukkuvan tytön rintaa.

Silloin Anna kavahti istumaan ja katseli unenpöperössä


ympärilleen. Mikä se oli? Tuvassa ei ollut ketään — ja joku tokitti ja
puri häntä sängyssä.

Mutta kuultuaan nahkasen alta äänen: pi — pi — pi — selvisi


hänelle asia heti. Hän haki turkin alta ja sai käteensä pehmeän,
lämpöisen ja elävän pikku palleron. Hän huudahti ilosta: Ai, elävä
pikku tipo — ihan elävä ja minun omani.

Millä ilolla hän nyt odotti muoria ja poikia kotiin! He varmaan


tulisivat hämmästymään! Mutta lakaistessaan tuvan lattiaa ja tarkasti
pitäessään silmällä pikku tipoa, joka nokitti vettä pikku nokallaan,
lensi hänen päähänsä uusi ajatus. Mitäpä jos hän koettaisi! Hän
pysähtyi luuta kädessä. Uskaltaisiko hän…?
Ah — eihän hänen sopinut ajatella itseään! Olihan hän rukoillut
Jumalaa auttamaan. Hänen kasvoilleen ilmestyi päättäväisyyden
ilme. Hän lopetti lakaisemisen, otti pikku tipon, asetti sen varovasti
pieneen koriin heinien sisään ja ripotti leivänmuruja eteen. Sitte hän
sitoi liinan korin kanneksi ja puki itsensä pyhäpukuunsa. Ja
muutamien minuttien kuluttua oli Anna matkalla kaupunkiin. Hän oli
päättänyt myydä kananpoikasen, että saisi antaa Matleena-muorille
siitä saamansa rahat.

Aurinko paistoi kuumasti — paahtoi polttavasti. Puitten ja


pensaitten lehdet riippuivat mustuneina ja puoliksi kuivuneina. Kaikki
kuihtui äärettömästä kuivuudesta. Annasta tuntui vaikealta
kengittää, sillä tomu kohosi maantiellä ilmaan pienimmästäkin ilman
liikahduksesta. Mutta tätä ei Anna ehtinyt ajattelemaan, sillä hän oli
päättänyt panna viimeiset voimansa voidaksensa olla Matleena-
muorille hyödyksi.

Aurinko kohosi yhä korkeammalle ja paahtoi yhä kuumemmin.


Yht'äkkiä tunsi tyttö huimaavan päätänsä. Hän istautui horjuen tien
viereen kori sylissä.

Mutta hänen täytyi eteenpäin…! Kaukana, harjun petäjikön luona


kulki iloinen seurue. Sieltä kuului puhelua ja naurua. Äkkiä alkoi
metsän puut, kivet ja itse aurinko sekaisin pyöriä Annan silmissä, ja
kohta koko maailma musteni. Hänen päätään pisteli kuin neuloilla, ja
pian meni hän tainnuksiin.

Iloisen seurueen nauru taukosi äkkiä, kun se tien vierestä löysi


tajuttoman tyttösen, jolla oli pieni kori kädessä. Eräs nuori mies
kumartui kiireesti tyttöä tutkiakseen ja antoi pikaisia määräyksiään
seuran muille jäsenille. Tuon nuoren miehen vanha, hopeahiuksinen
äiti vilvoitteli tytön otsaa.
Äkkiä avasi sairas silmänsä. — Kori — kuiskasi hän tuskin
kuuluvasti hädissään.

Se oli hyvässä tallessa. Seurue oli kuullut piipityksen korista ja piti


kananpoikasesta hyvää huolta.

Vähitellen kirkastui Annan katse iloisemmaksi ja hän tuli täyteen


tajuunsa. Kun hän kertoi vanhalle rouvalle elämäntarinansa, katseli
tämä häntä vettynein silmin ja sanoi: — Rakas lapsi, elä ole levoton.
Kaikki käy hyvin, minä ostan sinun kananpoikasesi.

*****

Mökissä oli suuri hätä Annan häviämisestä. Matleena-muori, joka


oli palannut neljän väsyneen poikansa kanssa astiat täynnä keltaisia
muuramia, kärsi suurta tuskaa siitä, kun oli jättänyt tytön itsekseen.
Mihin ihmeelle oli lapsi mennyt?

— Äiti! — huusi Matti — tänne tulee hieno herra.

Ja ennenkuin Matleena-muori ehti mitään ajatella, astui vieras


tupaan.

— Anteeksi, tämä on varmaan pikku Annan koti? Ja te olette


varmaan
Matleena-muori, josta tyttö on puhunut.

Matleena-muori joutui niin hämilleen ettei saanut vastausta


suustaan ja hänen neljä poikaansa katselivat avossasuin vierasta,
joka heille hymyili ja ymmärsi oikeaan paikkaan tulleensa. Vieras
kertoi kaikki ja Matleena kuunteli liikutettuna.
— Ja nyt — sanoi nuori lääkäri — olemme äitini ja minä ajatelleet
ottaa tytön luoksemme ja hoitaa häntä siksi, että hän tulee kyllin
vahvaksi palatakseen takaisin teidän luoksenne. Kun hän on erittäin
heikko ja vähävärinen, täytyy hänen saada hyvää hoitoa.

Matleena-muori tunsi kummallista kaihoa, vaikka olikin iloinen


siitä, että tyttö joutui hyvään hoitoon. Hän seurasi heti lääkäriä
harjulle, jossa seurue Annaa parhaansa mukaan hoiteli.

— Äiti — kuiskasi pikku tyttö kalpeana ja väsyneenä, vaikka ilosta


loistavin silmin — nyt sinä tulet iloiseksi, äiti. Hyvä, vanha rouva on
luvannut ostaa kananpoikasen. Eikö ollut ihmeellistä, että minä
löysin sen kananpesän? Ja te saatte joka pennin, äiti, ja poikain
pitää saada runsaasti ruokaa. Äiti! — eikö sinunkin mielestäsi Jumala
ole ollut meille hyvä?

Matleenan luja tahto murtui. Liikutuksesta nyyhkyttäen kumartui


hän tytön yli ja hyväili tämän tukkaa ja sanoi:

— Sinä et saa kuolla, sinä et saa minua jättää! Sitä surua en


jaksaisi kestää.

Annan kasvot loistivat tyytyväisyydestä ja ilosta. Loistavin silmin


katseli hän pilviin ikäänkuin jotain hakien.

Hänen ainoa huolensa oli siitä kuinka hän osaisi kyllin kiittää tästä
onnellisesta hetkestä.

Hupsu-Elias.
Oli lämmin kesäinen ilta. Kylän pojat loikoilivat tapansa mukaan
Vasikkahaan katajikossa. Mutta ikävältä alkoi sekin ammatti
ajanpitkään tuntua, vaikka Pitkä-Roopertti ja Nikkarin Saska koettivat
tuontuostakin saada naurua aikaan jos jonkinlaisilla kujeilla.

— Mitäs sanoisitte kiekon lyönnistä; sitähän ei ole lyöty tänä


kesänä? lausui yksi joukosta.

— Kiekolle, kiekolle! huusivat kaikki ja hyökkäsivät maantielle.

Huimaa kyytiä hurisi kohta kiekko, ja korkealle kohosi tomu


kuivalta maantieltä. Kaikki olisi käynyt hyvin, elleivät Nikkarin Saska
ja Pitkä-Roopertti olisi sattuneet eri puolille. Heidän välilleen pyrki
tuontuostakin kina puhkeamaan. — Roopertti oli heittänyt kiekon,
mutta kun se kulki huonosti, sanoi hän sen "lipsahtaneen" ja vaati
uutta heittoa.

— Et saa, huusi Saska ja aikoi siepata kiekon.

Mutta silloin hyökkäsi Roopertti paikalle, ja tappelu oli valmis.


Mutta joku huusi: — Hupsu-Elias! Kaikki kääntyivät katsomaan ja
tappelukin unohtui. — Tien käänteessä tuli todellakin Hupsu-Elias
puukenkineen ja pattisauvoineen. Tuossa tuokiossa oli koko
poikalauma ukko-paran ympärillä. Pehmeällä, hiukan värisevällä
äänellään saneli hän taasen tavallista mielilausettaan: — "Sallikaat
lasten tulla" j.n.e.

Poikiin tarttui pilanteon halu ja sentähden huusivat he mikä


mitäkin.

— Saarnaa meille Paapelintornista!


— Ei; — minä tahdon Eliaan taivaaseen astumisesta! — Mitä vielä!
— Pikkuinen puhe häävaatteista ei tekisi pahaa, pilkkasi Pitkä-
Roopertti ja kiskoi ukkoa takaperin takin liepeistä. Nukkanen nuttu
ratkeili ja paikat irtaantuivat. Mutta hän kiskoi yhä ja huusi;
Saarnaatko häävaatteista, vai…

— Kyllä minä saarnaan teille neljännestä käskystä, kuului vakava


ääni heidän takanaan, ja kun pojat kääntyivät, näkivät he edessään
pitäjän kappalaisen, joka palasi peltoaan katsomasta.

Ankarasti hän nuhteli heitä ja puheli Jeesuksesta, joka oli kaikissa


vanhemmilleen kuuliainen ja rakasti kaikkia ihmisiä samalla
rakkaudella.

Poikia alkoi ensin hieman hävettää, ja mieli olisi tehnyt metsään


livistämään, jos vain olisi ollut uskallusta. Vähitellen alkoivat mielet
sulaa ja hiljainen katumus rupesi kytemään itsekunkin rinnassa.

Pastori kohensi ukon nuttua ja antoi hänelle sauvan, jonka joku


ilkimys oli heittänyt tien ojaan. Luoden surullisen silmäyksen poikiin
läksi hän taluttamaan siunailevaa Eliasta.

Alakuloisena hiipivät pojat kotiinsa, ja kun he jonkun ajan perästä


uudelleen kokoontuivat kiekonlyöntiin;, olivat he hieman
kohteliaampia sivukulkijoille.

*****

Vähänvirran alapuolella oli jo kaksiöistä jäätä, ja sinne kokoontui


koko poikajoukko. Useilla, jotka olivat kesällä ansainneet rahaa, oli
oikeat "amerikkalaiset" luistimet. Mutta Pitkä-Roopertti ja Nikkarin
Saska olivat olleet jouten koko kesän ja sentähden täytyi heidän
tyytyä vanhoihin rämiin. Tämän puutteensa koettivat he korvata
uhkarohkeudella, joka oli osottavinaan miehuutta. Yhä keskemmälle
he pyrkivät ja uskalsipa Saska viimein ottaa ankaran vauhdin ja
laskoa yli koko suvannon. Jää kyllä ritisi ja voihki, mutta toisella
rannalla koukerteli jo Saska.

Tämäkös kiihotti Roopertin kunnianhimoa. Yhtäkkiä otti hän tulisen


vauhdin ja aikoi lennättää yli. Mutta hän oli painavampi kuin Saska,
ja sentähden ulvahti jää surkeasti ja särkyi. Siellä, keskellä syvää
jokea, huusi Roopertti, mutta kukaan tovereista ei kyennyt häntä
pelastamaan.

Hän oli jo aivan uppoamaisillaan, kunnes rantaan juoksi mies


lakittomin päin ja hapset hajallaan. Se oli Hupsu-Elias. Tuossa
tuokiossa käsitti hän, mitä muut eivät kyenneet, sieppasi seipään
aidasta ja kiidätti sitä onnettomuuspaikalle. Ihan viime tingassa sai
hän työnnetyksi sen hukkuvalle, joka siihen epätoivon voimalla
taittui. Yhdellä nykäyksellä oli hän kestävällä jäällä.

Väkeä oli kerääntynyt rannalle, muiden muassa Roopertin äitikin.


Säikähtyneenä, mutta iloissaan, vei hän kotiin kalpean ja värisevän
poikansa ja vähitellen hajautui muukin väkijoukko. Minne Hupsu-
Elias joutui, sitä ei kukaan ollut huomannut.

Pitkä-Roopertti sai ankaran keuhkokuumeen, joka seurasi


vilustumista. Yöt, päivät valvoi äiti hänen vuoteensa ääressä, ja
kaikki näytti jo menetetyltä. — Mutta kun ensimäinen kevätaurinko
alkoi paistaa, kääntyi tauti, ja ensimäiset tervehtymisen merkit
näkyivät Roopertin poskilla. Vähitellen palasivat voimatkin, mutta
vallattomuus ja hilpeyskin olivat poissa.
Hupsu-Elias oli Roopertin sairastaessa muuttanut toiseen elämään;
mutta hänen haudallaan kasvoi kesällä kukkia, joita ihmiset
ihmettelivät. Ne olivat vilpittömän ja hiljaisen kiitollisuuden kukat —
ja Roopertti hoiteli niitä.

Laurin joulu-unelma.

Pikku Lauri oli ollut ensi kertaa jouluna kirkossa. Voi kuinka
hauskaa siellä oli juhlapukuisen kansan keskellä vieressä oman isän
ja äidin! Lukemattomat joulukynttilät loivat kirkasta valoaan yli
korkeakattoisen temppelin, ja kruunut kimaltelivat kirkkaina niiden
loisteessa. Kaikki ihastutti Lauria niin, että hän mielellään olisi
taputtanut pieniä kätösiään, elleivät kaikki ihmiset olisi näyttäneet
niin vakavilta. Äiti kehotti kuuntelemaan papin kaunista puhetta
Jesuslapsesta, joka syntyi kunnian kuninkaaksi Betlehemin seimessä.
Mutta vielä juhlallisempaa oli Laurin mielestä urkujen soitto ja
seurakunnan täysiääninen veisuu, jota hän lapsenäänellään koetti
hiljaa säestää.

Kaikkea tätä muisteli Lauri kotimatkalla istuessaan kirkkoreessä


lämpimien peitteiden sisällä. Ruuna ravasi vikkelästi isän ohjatessa,
ja sen vaskiset tiu'ut helisivät iloisesti talvisessa aamuilmassa.
Hauskempaa vielä oli katsella metsän puita lumisine oksineen. Ja ne
näyttivät liikkuvan taapäin taajoissa riveissä hyvällä vauhdilla. Sepä
merkillistä! Mihinkä kiiruhtivat ne? Menevätkö ne jouluvieraiksi pikku
serkkujen tai vanhojen tätien ja kummien luo toiseen metsään? Niin
ajatteli ensin pikku Lauri. Mutta sitten hän tuli muistaneeksi, ettei
puilla ole serkkuja ja vanhoja tätejä. Kummeja ei heillä liene
lainkaan, koska ei pappi käy yhtäkään puun tainta kastamassa
samalla tavalla kuin pientä siskoa edellisenä kesänä. Taivaan pilvet
ne puun taimen kastavat ja Jumalan hyvät enkelit niistä pitävät
huolta. Sitten johtui Laurin mieleen, että puut ovatkin matkalla
kirkkoon. Niin, kirkkoon ne kiiruhtavat, mietti Lauri. Ja hän oli
mielessään oikein iloinen tästä havainnosta, ikäänkuin olisi saanut
selville suuren ja ihmeellisen salaisuuden. Ja varmuuden vuoksi
päätti hän kysäistä asiaa äidiltäkin.

"Menevätkö puut kirkkoon, äiti?" kysyi Lauri ihastuneena.

Äiti oli äänettömänä miettinyt papin joulusaarnaa. Hän ajatteli sitä


äitiä, joka lähes pari tuhatta vuotta sitten tuuditteli helmassaan
Jumalan lasta, jota Betlehemin paimenet iloiten tervehtivät
odotettuna rakkauden ja rauhan ruhtinaana ja maailman
Vapahtajana. Kuinka hellästi eikö Maria hoitanut ja vaalinut Herran
lasta kaiken puutteen ja köyhyyden keskellä! Kuinka haluisasti hän
kasvatti häntä jalona taimena Herran tarhassa! Minulla on pieniä
poikia ja tyttäriä, — ajatteli äiti — joitten pitäisi kasvaa sen suuren ja
täydellisen esikuvan mukaan, minkä Jeesuslapsi on meille jättänyt.
Kuinka neuvoisin, ohjaisin ja johdattaisin heitä sille tielle, joka johtaa
elämään, onneen ja rakkauteen?

Mutta Lauri, odotellen vastausta, keskeytti uudelleen äidin


mietteet.

"Näkeekö äiti, että puut menevät kirkkoon? Mahtuvatko ne kaikki


meidän kirkkoon, vai menevätkö ne muuannekin?" kyseli hän.

"Ei äitisi sitä tiedä, poikaseni, eikä ole nähnyt, mutta sen äitisi
tietää, että metsän puutkin pitävät omalla tavallaan
jumalanpalvelusta siinä suuressa ja ihanassa temppelissä, jonka
Jumalan kädet ovat perustaneet. Kun sinä tulet suureksi, niin opit
sen vielä näkemään ja ymmärtämään", vastasi äiti.

"Jos puut menisivät kirkkoon", tuumasi isä, "niin mitä luulisit


niiden siellä tekevän?"

"Ehkä ne saarnaisivat ja veisaisivat sekä katselisivat kauniita


kynttiläkruunuja", lisäsi siihen äiti ja kääri lujemmin vaatteita
poikasensa ympärille.

"Näetkö vieläkin puitten kirkkoon marssivan?" kysyi äiti,


peittäessään
Laurin pään ja kasvot.

"Kyllä minä näen ne", sopersi Lauri. "Minä näen ne ja kirkon


myös?"

Ja Lauri näki ne todellakin. Sillä viattoman lapsen silmät näkevät


aina sen mikä on ihanaa ja hyvää. Heidän enkelinsä avaavat heidän
sielunsa eteen kauniin maailman sekä päivällä että yöllä, jos he
tahtovat pysyä kuuliaisina ja hyvinä lapsina. Hyvä enkeli kosketti
Lauria vain yhteen silmäluomeen, ja katso, silloin avautui hänen
eteensä hauska näkö. Hän seisoi pienellä kummulla vanhan
kunnianarvoisen kirkon vieressä. Aamutuuli henkäili raikkaasti hänen
ympärillään ja hiljalleen humisivat vanhain puitten latvat
kirkkomäellä. Kaunis aamurusko heijasti monivärisenä metsän
huurteisesta rinnasta ja nietoksien lukemattomista lumikiteistä,
kointähden lempeänä tuikkaessa taivaan sinikorkeudesta. Ja
ihastunut Lauri huomasi, kuinka koko luonto sai mielen ja kielen,
kuiskaten joka taholla: "nyt on ihana joulu!" Mutta eniten kasvoi
metsän riemastus ja humina. Lumiset puut heiluivat ja huojuivat
humisten ja laulaen niin ihanasti, ettei Lauri ennen koskaan ollut
sellaista kuullut. Vihdoin huomasi hän koko metsän äkkiä saavan
kesäisen vihreytensä. Tuomet ja pihlajat kukkivat, ja paksun hangen
alta kohosi esille vihreä nurmikko monine kukkasineen, jotka kaikki
näyttivät laulavan samaa ylistysvirttä. Laurin mielestä olisi pitänyt
olla ankara ja luminen talvi, koska juuri vietettiin joulujuhlaa, mutta
kaikki tuntui niin lämpöiseltä ja kesäiseltä. Eikä ollut aivan kesäkään,
sillä talven lumet kimaltelivat moniväristen kukkien keskellä, vaikka
ne eivät enää niihin kylmyyttä ja hallaa huokuneet. Oli kuin talvi ja
kesä olisivat sulautuneet yhdeksi kokonaisuudeksi,. sopusointuiseksi
ihanuudeksi häiritsemättä toinen toistaan.

Mutta yht'äkkiä aukenivat kaikki vanhan kirkon raskaat ovet, ja


sieltä sisältä välkähti niinkuin kynttilöiden kirkas loimo. Suuri liike
syntyi silloin metsässä ja entistä kaikuvammin soi luomakunnan
laulu. Vanhat kuuset ja koivut, jotka monen monta vuotta olivat
vainajien hautakummuilla vartijoina seisoneet, ne ensin kulkivat
kirkon ovelle. Ja katso, kirkon katto kohosi korkeammalle ja
korkeammalle, ja isommaksi avartui oviaukko, niin että
puuvanhukset pääsivät sisälle. Niiden jälestä tuli toisia ja yhä toisia
suuria sekä pieniä puita juhlallisessa marssissa. Lauri näki lopulta
koko suuren metsän joka taholta lähenevän samaa päämäärää. Sepä
oli ihmeellistä! Lauri pujahti puiden lomitse kirkon nurkkaan. Kirkko
oli jo täynnä, mutta mitä enemmän sinne oli uusia tulijoita, sitä
laajemmalle levisivät seinät ja sitä kauemmaksi tähtitarhoja kohden
avartui kaareva katto. Ja kynttiläkruunut suurenivat suurenemistaan,
niin että lopulta näyttivät mahdottoman isoilta jättiläisiltä, jotka
pitivät käsissään tuhansia tulisoihtuja. Lopulta nämäkin himmenivät
yli taivaan leviäväksi valousvaksi, jonka lävitse tuikkivat taivaan
tähdet. Ja kun Lauri ennätti katsoa ympärilleen, näki hän kirkon
seinien yhä pakenevan ja häipyvän näkymättömiin kaukaisen
näköpiirin taa. Laurin sydäntä ahdisti, sillä hän näki olevansa
suuressa valoisassa metsässä. Pelästyneenä yritti hän huutaakin,
mutta lähellä olevat pienet vesat katsoivat ystävällisesti häneen.
Kukkaset nyökyttivät päätään ja hyvänhajuinen tuomikin, jonka
oksat olivat täynnä kukkia, hymyili hänelle ystävällisesti ja sanoi: "Älä
pelkää, lapsukainen! Ei kukaan tee sinulle pahaa, sillä nyt on joulu,
ja me kaikki olemme suuressa ja pyhässä Jumalan temppelissä." —
"Niin, nyt on joulu", sanoi katajapehkokin ja ravisti iloisena
teräväneulaisia oksiaan. "Nyt on joulu, nyt on joulu!" kaikui joka
oksalta. Ja metsän mahtava kuoro lauloi silloin joululaulua: "Kunnia
olkoon Jumalalle korkeudessa, maassa rauha ja ihmisille hyvä tahto!"

Lauri oli sanomattomasti ihastunut, sillä ei koskaan ollut hän


nähnyt tai kuullut mitään niin juhlallista ja kaunista. "Nyt on joulu,
nyt on joulu!" huudahti hänkin ja löi riemuissaan käsiään yhteen.
"Niin, nyt on joulu!" vastasi hänelle silloin tuttu äidin ääni.
"Nousehan nyt syömään lämmintä joulupuuroa pitkän kirkkomatkan
perästä."

"Minäpä olen ollut suuressa kirkossa, jossa kaikki puut soittivat ja


lauloivat", sanoi Lauri.

"Niin, poikaseni, jospa kerran ymmärtäisitkin luomakunnan suurta


jumalanpalvelusta", vastasi siihen äiti.

Martin koulumatka.

Martti hiihti kouluun. Talvinen aurinko oli juuri noussut ja alkanut


heittää säteitänsä hangen valkealle pinnalle. En ole koskaan
hiihtänyt näin hyvällä kelillä ja kauniilla säällä, ajatteli Martti
hiihtäessään Kuusimäkeä alas, josta hänellä oli tapana laskea jäälle.
Siihen mäen alle olivat kylän pojat tehneet hyppyrin. Martti ei siitä
tiennyt mitään; olivat sen varmaan laatineet juuri häntä varten
eilisiltana tai tänä aamuna. Martti lensi monta syltä ilmassa, mutta
hyvin kävi kuitenkin. Polvet vain vähän notkahtivat suksien taas
koskettaessa maata. Vauhti lisääntyi hyppäyksestä, ja Martti liukui
kauvas jäälle, jonka toisella puolen uusi, valkea koulutalo loisti
auringon paisteessa.

"Hei huimaa!" huusi hän ylpeänä mennessään, ja vastaukseksi


kuului iloista naurua takaa päin. Sieltä hiihtivät Alatalon Antti ja
Mäkelän Kalle ladon takaa, jossa olivat olleet piilossa katselemassa
Martin laskua.

"Terve mieheen!" huusivat pojat yhteen ääneen,

"Huomeniksi, huomeniksi!" vastasi Martti. "Mäkeäkö pojat ovat


laskemassa jo näin varhain?" — Hän päätti kiusallakin olla
puhumatta koko hyppyristä, koska kerran oli siitä suoriutunut.

"Mitäpä täällä Kuusimäessä viitsisi laskea; tuonne Kurjenmäkeen


olemme matkalla — siinä sitä on sievä heilahdus alaspäin
korkeimmalta kohdalta", vastasi Kalle, iskien silmää Antille. "Tule
sinäkin kerran mukaan, Martti, oikein miesten joukkoon", jatkoi hän,
silmäillen ivallisesti pientä toveriaan, joka oli häntä melkein puolta
päätä lyhempi. "En taida tässä oikein joutaa", vastasi Martti hieman
levottomalla ja epävarmalla äänellä, jota hän sentään koitti tehdä
rauhalliseksi ja miehekkääksi.

"Et uskalla, pelkäät vitsaa opettajalta, kun olet poissa koulusta",


kiusoitteli Antti vuorostaan. "Sellaisen 'mamman pojan' onkin parasta
istua koulussa kirjatikku kourassa ja kotona nukkua äidin
villakopassa."

Martin poskille nousi veri. Hänen rinnassaan hytkähti oudosti, ja


harmaissa silmissä välkähti jotakin.

"Enkö uskalla! Näytän, että uskallan ja lasken korkeammalta kuin


te!" huusi hän ja alkoi raivokkaasti hiihtää Kurjenmäkeä kohden.

Antti ja Kalle katsahtivat hämmästyneinä toisiinsa, mutta lähtivät


kuitenkin perässä. He olivat vain tahtoneet vähän kiusoitella Marttia,
joka oli kovin itserakas ja arka kunniastaan. Kalle ja Antti taas olivat
häntä toista vuotta vanhemmat ja paljon kookkaammat, mutta
koulusta olivat he eronneet jo kolmannelta luokalta. Laiskoja ja
huolimattomia kun olivat, olivat he kiusanneet vanhempiansa, että
nämä vihdoin antoivat heidän jäädä joulusta alkaen pois koulusta.

Kohta lähenivät pojat Kurjenmäkeä. Se on korkea vuorenrinne,


joka on puista melkein paljas ja talvisin muodostaa uhkean
suksimäen. Jyrkimmältä kohdaltaan on se sentään liian vaarallinen
laskea. Siksi olikin opettaja ankarasti kieltänyt kaikkia koulupoikia
käyttämästä sitä.

Martin sydän sykki ankarasti. Omantunnon ja kiusaajan äänet


taistelivat hänen mielessään. Edellinen sanoi; "Älä laske, Martti,
opettaja on sen kieltänyt. On väärin, että olet poissa koulusta." —
Kiusaaja taas kuiskasi: "Huono olet, kun et laske! Toverisikin
nauravat pelkuruudellesi, raukka!" Martti oli kahden vaiheilla. Hän oli
joskus kuullut opettajan puhuvan synnin varjosta, jonka se heittää
ihmislapsien tielle, kun he tekevät pahaa. Hän katsoi eteensä ja näki
siinä lumella pitkän, tumman varjon. Hän jo melkein päätti olla
laskematta, kun molemmat toverit saapuivat paikalle, ja Antti virkkoi
hieman epävarmasti, mutta samalla ivallisesti:

"No, näytähän nyt, Martti, että olet mies ja miehen poika. Akka
olet, ellet laske, kun kerran kerskasit!"

Enempää ajattelematta iski Martti sauvansa lumeen, työnsi kerran,


ja kohta kulki hän huimaavaa vauhtia jyrkännettä alas. Hän tunsi
ilman vinkuvan korvissaan ja sydämmessään outoa ahdistusta. Hän
ummisti ensin silmänsä, mutta avasi ne taas ja näki sivullansa
äskeisen varjon. Sitten tunsi hän kovan tärähdyksen eikä enää
nähnyt mitään — —

*****

Kun Martti taas tuli tajuihinsa, makasi hän vuoteella kotipirtissä.


Hänen vasenta jalkaansa pakotti kovasti, eikä hän voinut sitä
liikuttaa. Äiti istui sängyn jalkopäässä, ja hänen kalpeat kasvonsa
kirkastuivat, nähdessään Martin ensi kerran avaavan silmänsä.

"Äiti — anteeksi!" kuiskasi tämä ja vaipui taas uneen, josta vasta


seuraavana päivänä heräsi.

Äiti kertoi silloin, että Martti oli kaksi päivää sitten kannettu kotiin.
Hän oli taittanut jalkansa, laskiessaan Kurjenmäestä. Isä oli heti
haettanut lääkärin, joka sitoi säären ja asetti luut paikoillensa.
Opettajakin oli jo kahdesti käynyt häntä katsomassa ja luvannut
antaa kaikki anteeksi, kun Martti vain pian paraneisi. Kalle ja Antti
olivat heti samana päivänä menneet opettajan luo ja kertoneet itse
kiihottaneensa Marttia tähän uhkarohkeaan tekoon, joka oli vähällä
maksaa hänelle hengen. Poikain hartaista pyynnöistä oli hyvä
opettaja luvannut ottaa heidätkin takaisin kouluun, kun lupasivat olla
oikein nöyriä ja ahkeria.

Martin paraneminen kävi nopeasti. Jo parin viikon kuluttua sai hän


lähteä kouluun kelkalla, jota Kalle ja Antti työnsivät, mutta rakkaita
suksiansa ei hän enää sinä talvena saanut käyttää. Sairautensa
aikana katosi hänestä kaikki itserakkaus ja ylpeys. Sen jälkeen oli
hän nöyrä ja vaatimaton poika, joka ei koskaan edes ajatellut olla
tottelematon.

"Mutta mitä Martista sitten tuli?" kysynevät monet lukijoistamme.


En oikein tiedä, kuuluko se tähän kertomukseen ja saanko siitä
puhua. Hän on nyt yksi maamme parhaita hiihtäjiä, joka on saanut
palkintoja monessa suuressa kilpailussa.

Mitä västäräkki kertoi kyntäjälle.

Möttös-Matti kynteli kesantoa Riihentaustapellollaan. Matin


perässä juoksenteli vakoa pitkin iloinen, ketteräliikkeinen västäräkki
tarkastellen joka vaon, minkä Matti aukaisi. Silloin tällöin se aina
tapasi jonkun pienen matosen, jonka se söi, tahi, jos saalis oli
suurempi, vei pesäänsä poikasilleen. Kuitenkaan ei se matkoillaan
kauvan viipynyt, vaan juosta piiperteli Matin kyntäessä yhtä päätä
aivan hänen selkänsä takana vaossa, etteivät vaan matoset ja toukat
ehtisi kätkeytyä mullan sisään.

Kun Matti oli sitkaimen, pari kyntänyt, seisautti hän hevosensa,


joka kuumana päivänä oli ruvennut ohimoilta hikoilemaan, istahti
pientarelle levätäkseen.
Kun västäräkki ei saanut hevosen seistessä uutta mullosta
etsittäväkseen, hyppäsi se iloisella lennähdyksellä Matin auran
sarvikolle.

Matti ihmeissään linnun rohkeudesta ajatteli ensin, että mitähän se


nyt miettii, kun tuohon hyppäsi, mutta kun hän huomasi linnun
kumartelemiset ja liverrykset, käsitti hän, että sillä on varmaankin
hänelle jotain sanomista. Ja tuskin oli Matti ehtinyt näin ajatella, kun
västäräkki nyökäytti päätään ja alkoi:

Syntiinlankeemuksen jälkeen lepää rangaistus koko luomakunnan


yli. Runsaimmin saamme siitä kärsiä me elävät olennot. Erittäin on
meidän pikkulintujen surkeus suuri. Meillä kun ei ole voimia taistella
väkevämpiämme vastaan. Saammepa usein kovaa kokea ihmisenkin
puolelta. Kerron sinulle, Matti, elämäntarinani, niin huomaat, että
surunsa ja murheensa on muillakin eikä ainoastaan ihmisellä.

Tuolla Koivusillan kotasissa olen nähnyt ensi kerran päivän valon.


Siellä kivien välissä, kahden kiven yhtymässä, oli vanhempieni pesä.
Meitä oli siinä viisi pienokaista. Muistan aivan kuin tämän päivän,
kuinka äitimme kuletti meidät ensi kerran ulos pesästämme avaraa
maailmaa katselemaan. Me istuimme eräällä rantakivellä Kotajärven
rannalla. Sudenkorennot lentelivät järven rantaruohikossa. Äitimme
sieppasi niitä tavan takaa ja kuletti meille kivellä istuville poikasille
ruoaksi. Pian aloimme seurata äidin esimerkkiä ja itse otimme
lenteleviä hyönteisiä ruoaksemme. Oi kuinka elämä tuntui sinä
päivänä hupaiselta ja kevyeltä kauniissa ilmassa ihanan Kotajärven
rannalla! Kun yöksi saavuimme pesäämme, olimme unissamme
lentelevinämme perhosten perässä kultaisen päivän paistaessa.

Tämä ensimäinen kesä onkin ollut elämäni onnellisin aika.


Seuraavana keväänä vaivaloiselta talvimatkalta palattua aloimme
erään toisen västäräkin kanssa laittaa pesää teidän pajanne
lahonneeseen salvameen. Pesä onnistui muuten hyvin. Pahanilkiset
pojatkaan eivät sitä löytäneet, se kun oli ruispellon puolella
salvamessa, jonne heillä ei ollut mitään asiaa. Mutta kun
poikasemme kerran kesemmällä juoksentelivat ruoanhakupuuhissaan
teidän kesannollanne, heitti Pekka poikanne yhtä poikasistani kivellä
siipeen, niin että siipiluu katkesi. Tavottipa Pekka poikastani kiinnikin,
kun näki kiven sattuneen, mutta poikanen, vaikka ei päässytkään
lentämään, juoksi aidanraosta ruispellon puolelle ja kätkeytyi
kasvavaan rukiiseen. Siinä sitten poikaseni kaiken kesää juoksenteli
siipirikkona teidän kesantopellollanne kykenemättä lentämään.
Surkea oli meidän vanhempien katsella, kuinka se, toinen siipi aivan
suorana ja maatavetävänä, haki kesannolta ruokaansa. Koettipa
paha poikanne juosta usein sen kanssa kilpaa saadakseen sen kiinni,
mutta poikanen juoksi henkensä edestä, pelasti ja piilotti itsensä
milloin mihinkin.

Syksy tuli. Meidän toisten västäräkkien täytyi lähteä kylmää ja


nälkää pakoon etelämaihin. Siipirikosta pojastani ei ollut lähtijää, se
kun ei kyennyt lentämään. Hän jäi teidän riihenne ympärille
juoksentelemaan. Minä käskin tuttavani keltasirkun seuraamaan
poikani kohtaloita, hän kun jäi koko talveksi saman riihen luo.

Kun tänä keväänä palasimme, me västäräkit sekä muut


muuttolinnut, kysyin ensi työkseni sirkulta, tietääkö hän mitään
kertoa siipirikosta pojastani.

Tässähän se poikasi teidän mentyänne juoksenteli riihen ympärillä


pari kolme viikkoa hakien matosia ja hyönteisiä, mitä riihestä tulevan
lämmön vuoksi oli yöhalloilta säilynyt. Yönsä vietti se riihen salvamen
juuressa maassa, johon lämmin ilma salvamenrakosesta tuli ja
lämmitti sitä. Kun minä eräänä ankarana halla-aamuna lokakuussa
auringon noustessa lensin yösijaltani ruumenhuoneen räystään alta
siemeniä riihen edestä noukkimaan, näin minä, että sinun siipirikko
poikasi istua kyhjötti pää painuksissa riihennurkkauksella kuuraisena,
väristen ja palellen. Ei jaksanut edes päätään kääntää, vaikka me
toiset linnut, sirkut ja varpuset, nokimme siinä riihen edessä. Ja kun
nousevan auringon säteet sattuivat kuuraiseen ruohoon ja häneen,
ojentui hänen toinenkin siipensä, nokka painui maahan, ruumis
vavahteli muutamia kertoja — ja siihen hän kylmään ja nälkään
kuoli. Näin kertoi tuttavani keltasirkkunen.

En joutanut kuitenkaan kauvan kuollutta poikaani suremaan, sain


pian uutta surun aihetta. Tänä keväänä laitoimme me västäräkki
puolisot pesämme teidän riihihalkopinoonne. Pesä oli valmis ja
munat pesässä. Olimme eräänä aamuna ruokaamme etsimässä tältä
samalta kesannolta mitään vaaraa aavistamatta. Yht'äkkiä kuulin
varpuishaukan siipien suhinaa takaani, järvenrantalepikosta päin.
Päästin ääntä niin paljon kuin suustani sain ja lennähdin ylös
maasta. Puolisoni, joka oli vähän loitommalla minusta, ei arvattavasti
kuullut enemmän ryöstäjän siipien suhinaa kuin minun ääntänikään
ja joutui varpuishaukan saaliiksi. Näin, kuinka puoliso-raukaltani
höyhenet pöllysivät varpuishaukan kynsissä sen lentäessä samaan
suuntaan, mistä oli tullutkin.

Niin jäin minä yksin pesää hoitamaan, munia hautomaan ja


pienokaisia elättämään. Työtä ja huolta on paljon. Niiltä en jouda
suremaankaan, vaan näytän iloiselta surujeni keskelläkin. Olen
sinulle, Matti, liian kauvan elämäni vajaita valittanut, pienokaiseni
ehkä kaipaavat ruokaa. Yhtä minä kuitenkin vielä sinulta pyytäisin,
ettet vaan kertoisi pojillesi pesästäni siellä riihihalkopinossa. Heihin
en voi yhtä hyvin luottaa kuin sinuun, joka olet vanha ja vakava,
joka suot meille pienillekin elämisoikeuden. Erittäin pelkään poikaasi
Pekkaa, joka poikaseni viime kesänä siipirikoksi saattoi.

Tämän sanottuaan huomasi västäräkki pienen onkimadon


kiemurtelevan mulloksella, lennähti auransarvikolta, sieppasi sen ja
vei poikasilleen riihihalkopinoon.

Matti rupesi myöskin kyntämään. Häntä harmitti kovin Pekan


kovasydäminen teko viattomalle västäräkille. Hän ei osannut
aavistaa, että hänen Pekka poikansa, joka oli hänen mielestään niin
hyvä ja kiltti, saattaisi olla paha pikkulinnuille, jotka ovat ihmisille
sekä hyödyksi että huviksi. Lapsiaan päätti hän vakavasti varottaa
tekemästä pahaa lintusille enemmän kuin muillekaan
luontokappaleille.

Laiskan-Matin velka.

Siitä on kulunut jo pitkä aika, kun Laiska-Matti eräänä joulu-iltana


tämän merkillisen velan teki.

Sinä vuonna oli perustettu maailman ensimäinen koulu, ja


maailman ensimäiset koululapset olivat käyneet ensimäistä
lukukauttaan koulussa.

Siihenkin aikaan oli sekä ahkeria että laiskoja koululapsia. Kaikkein


laiskin oli erään talon nuorin poika Matti. Neljä siskoa, jotka myöskin
kävivät koulua, olivat ahkeria, mutta tämä viides oli oikea tukkilaiska.
Hän ei viitsinyt koskaan lukea läksyjään, vaan sanoi aina: "kyllä minä
vielä ennätän", tai: "huomenna luen oikein ahkerasti". Mutta sitä
huomenta ei tullut koskaan. Ja kun koulussa oli laskentotunti, niin
Matti ei viitsinyt edes kuunnella opetusta, vaan ajatteli: "ennätän
minä huomennakin; yhtenä tuntina saan muut kiinni ja toisena
menen jo kaikkien edelle". Kun syyslukukausi päättyi, ei Matti
osannut laskea senkään vertaa, että olisi voinut tarkalleen sanoa,
kuinka monta nappia hänen housuissaan, liivissään ja takissaan oli
yhteensä. Sen vuoksi ei kukaan viitsinyt enää häntä puhutella
oikealla nimelläänkään Metsäpellon Matiksi, vaan kaikki sanoivat
vain: Laiska-Matti, Laiska-Matti! —

Ensimäisen koulun ensimäinen lukukausi oli päättynyt juuri vähää


ennen joulua. Nyt oli jouluilta ja Metsäpellon lapset odottivat
paraillaan, koska joulupuuro tuotaisiin pöytään. Laiska-Matti tietysti
myöskin odotti, vieläpä muita hartaammin; sillä kaikki laiskat lapset
ovat erinomaisen ahkeria yhdessä asiassa — syömisessä.

Silloin avautui ovi ja sisään astui Haltia, vanha ystävällisen


näköinen ukko.

— Hyvää iltaa, rauhallista joulua taloon! tervehti Haltia.

— Iltaa, Jumala antakoon rauhallisen joulun, vastasivat kaikki


muut lapset; Laiska-Matti yksin seisoi kädet housuntaskuissa.

— Koska nyt on perustettu koulu — jatko Haltia — niin on meidän


kuninkaamme, kaikkein haltiain armollisin hallitsija ja hyväin lasten
ystävä, päättänyt antaa ahkerille koululapsille joululahjoja. Minä olen
nyt niitä tuomassa.

Ukko purki konttinsa ja kukin ahkera sisko sai lahjansa; Laiska-


Matti tietysti jäi ilman.
— Minä olen myös koulupoika! huusi Matti.

— Se kyllä tiedetään, vastasi Haltia.

— Minkä näköinen se sitten on minun lahjani?

— Se on pilkusta pilkkuun Laiskan-Matin näköinen, vastasi Haltia.


Kiitä onneasi, että pääset tällä kertaa ilman muuta; ensi vuonna
aikoo haltiain kuningas annattaa sinulle piiskoja joululahjaksi.

Matti purskahti itkuun. Haltia pani kontin selkäänsä ja aikoi lähteä.

— Älkää vielä menkö, pyysi Laiska-Matti. Jos minä rupeaisin joulun


jälkeen oikein ahkeraksi, niin…

— Niin saat ensi jouluna lahjan, niinkuin muutkin. Mutta sinua ei


kukaan usko, sinä olet niin monasti luvannut.

— Mutta nyt lupaan oikein todesti, niin totta kuin nimeni on Matti!

— Niin — Laiska-Matti! sanoi Haltia. Se nimi ei paljon takaa.


Sittepähän nähdään ensi jouluna. Minä puolestani toivon, että hyvin
kävisi.

Nyt Matille tuli hätä käteen.

— Hyvä Haltia, rakas Haltia, enkö voisi saada jo tänä jouluna, jos
oikein varmasti parannan itseni?

— En luule. Haltiain kuningas ei ole sanonut mitään siitä, että voisi


antaa etukäteen. Mutta… mutta… voisinhan koettaa yhden kerran
omalla vastuullani. Lupaatko varmasti lukea aina läksysi hyvin ensi
jouluun saakka?
— Sen lupaan! Mutta… mutta (Matti raapi korvallistaan)… eiköhän
olisi parempi panna joku varma määrä kertoja, se olisi selvempää?

Haltia naurahti.

— Hm, sinä alat tinkiä? Annappa kun tuumailen hiukan. — No,


käyhän sekin päinsä; parempi jotain, kuin ei mitään. Minä annan
sinulle tämän komean hevosen. Se on vaaleanvoitikko väriltään,
niinkuin näet, ja sillä on muutamia täpliä pitkin ruumista, niin että se
on oikeastaan papumus.

— Niin on, sanoi Matti.

— No niin, sinä luet tästä ensimäisestä täplästä yhden kerran


läksysi.
Eihän teillä kovin pitkiä läksyjä ole?

— Ei, ei! huusi Laiska-Matti: Ja minä luenkin nopeasti, koko


Isämeidänkin yhdellä hengenvedolla!

— Niin, tästä ensimäisestä täplästä sinä luet yhden kerran,


toisesta kaksi kertaa, kolmannesta neljä, ja niin aina
kaksinkertaisesti jokaisesta seuraavasta täplästä. Onko se mielestäsi
paljo?

— Ei, ei; se on hyvä kauppa se! Kättä päälle!

— Kuuleppas Matti! huusivat toiset lapset. Et sinä osaa


kertomatauluasi; siitä voi tulla suuri summa: 2 kertaa 1 on 2, 2
kertaa 2 on 4, 2 kertaa 4 on 8, 2 kertaa 8 on 16, 2 kertaa 16 on 32
———
— Mitä te siellä turisette! keskeytti Matti. Te nyt muka osaatte
tehdä kauppoja vaivaisen kertomataulunne avulla. Minähän tässä
kaupan teen.

— Aivan niin, aivan niin, myhäili Haltia.

— Tässä on neljä todistajaa, kiirehti Matti. Kättä päälle! Pidäthän


sanasi?

— Kättä päälle! sanoi ukko. Haltia pitää aina sanansa.

— Matti myös.

Kädet läiskähtivät, ja toiset lapset erottivat ne.

— Hevonen on minun nyt?

— Niin on, tuosta saat. Mutta ehkä samalla laskemme, montako


kertaa siitä tulee.

— Eikö se voisi jäädä jälkeen joulun? pyysi Matti.

— Ei oikein; onhan selvintä suorittaa kauppa loppuun saakka.

— Saman tekevä, pian se on laskettu! huusi Matti heittäen


riemuissaan lakkinsa ilmaan.

Haltia istui pöydän ääreen ja kaikki lapset ympärille. Ensin


laskettiin hevosen täplät. Niitä oli täsmälleen 50 ja yksi päälle, se
joka oli keskellä otsaa.

— Onko oikein laskettu? kysyi Haltia.

— Oikein on! vastasi Matti. Hih vaan! Eipä niitä paljo ollutkaan!
— Ei, sanoi Haltia. — Ensimäinen täplä: yksi kertaa — toinen
täplä: kaksi kertaa — kolmas täplä: neljä kertaa — neljäs täplä:
kahdeksan kertaa — viides täplä: 16 kertaa — kuudes: 32 kertaa —
seitsemäs: 64 kertaa — kahdeksas: 128 kertaa — yhdeksäs: 256
kertaa — kymmenes: 512 kertaa.

— Alkaapa niitä vähin karttua, tuumi Matti. Mutta minä luenkin


Isämeidän yhdellä hengenvedolla.

— Enkä minäkään puolestani niin kovin tarkka ole, arveli Haltia.


Saat 500:sta helpotusta nuo 12 kertaa. Eteenpäin!

— Yhdestoista täplä: tuhat kertaa — kahdestoista: 2 tuhatta


kertaa — kolmastoista: 4 tuhatta kertaa — neljästoista: S tuhatta
kertaa — viidestoista: 16 tuhatta kertaa — kuudestoista: 32 tuhatta
kertaa — seitsemästoista: 64 tuhatta kertaa — kahdeksastoista: 128
tuhatta kertaa — yhdeksästoista: 256 tuhatta kertaa —
kahdeskymmenes täplä: puolimiljoonaa 12 tuhatta kertaa.

— Te varmaan laskette väärin, petätte minua! huusi itku kurkussa


Laiska-Matti, joka ei ollut voinut enää pitkiin aikoihin laskemista
seurata.

— Eipähän, oikein on joka numero! sanoivat toiset lapset.

— Sen se vaivainen kertomataulu tekee, myhäili Haltia. Eteenpäin!

Taas laskettiin. Kolmaskymmenes täplä osotti jo 512 miljoonaa


kertaa.

— Minä en ymmärrä enää mitään! huusi Laiska-Matti.


— Laiskat pojat eivät todellakaan ymmärrä juuri mitään, sanoi
Haltia.
— Saat anteeksi 12 miljoonaa kertaa. Enkö ole antelias? Eteenpäin!

Neljäskymmenes täplä osotti jo 512 tuhatta miljoonaa kertaa,


josta
Haltia taas antoi anteeksi 12 tuhatta miljoonaa.

Viideskymmenes täplä osotti 512 miljoonaa miljoonaa kertaa.

— Viideskymmenes ensimäinen täplä! huusi Haltija. Annan sinulle


anteeksi kokonaista 12 miljoonaa miljoonaa, joten meidän välimme
on täsmälleen tuhat miljoonaa miljoonaa kertaa, ei yhtään alle eikä
päälle. Tiedätkö, Laiska-Matti, mitä se merkitsee?

— En, pelkään että se merkitsee pahaa! Jaksankohan koskaan


lukea niin monta kertaa?

— Et, et koskaan. Se merkitsee sitä, että vaikka koko maapallon


lukutaitoiset lapset tulisivat avuksesi tuota velkaa suorittamaan, ette
kaikki yhteensä ennättäisi koko ijässänne sitä loppuun maksaa. Jos
olisit viitsinyt harjottaa laskentoa koulussa, olisit sen kysymättäkin
tietänyt, etkä olisi semmoisiin kauppoihin ryhtynytkään.

— Nyt kaiketi otat hevosen pois? kysyi Laiska-Matti sekä


häpeissään että suruissaan.

— En. Mikä on sanottu, se pysyy; Haltia ei syö sanaansa. Hevosen


saat pitää, mutta velkaasi saat myös ruveta lunastamaan. Nuo
viisikymmentäyksi täplää olkoot sinulle ainaisina muistuttajina
kuolemaasi saakka. Ja koska kaikki laiskat lapset ovat sinun
kaltaisiasi: huolimattomia, suupaltteja ja tyhmiä, niin minä, haltiain
kuninkaallisen majesteetin uskollinen palvelija, käsken ja määrään
hänen majesteettinsa nimessä, että tästä päivästä alkaen kaikkien
maapallon laiskojen lasten täytyy ottaa osaa tämän velan
suorittamiseen. Niin, tästä päivästä aina tuomiopäivään saakka,
kunnes velka on täydellisesti lunastettu, tai kunnes olette itsenne
parantaneet ja tulleet aivan ahkeriksi, jolloin koetan toimittaa teille
täydellisen anteeksiantamuksen hänen majestettinsa luona. Sanottu
ja pysyy. Ensi jouluna tulen katsomaan, minkä verran olet voinut
velkaasi lyhentää. Hyvää joulua teille kaikille!

Ovi kävi — Haltia oli kadonnut. —

Laiskan-Matin velkaa on sen jälkeen maksettu jo useita satoja


vuosia, mutta kesken se on yhä vieläkin — milloin loppuneekaan.
Vielä nytkin on paljo lapsia, jotka eivät lukemaan ruvetessaan
ajattele, että mitähän se sisältää ja että kuinkahan sen saisin
mieleeni pystymään, vaan: kuinkahan monta kertaa minun pitää tätä
läksyä lukea. Viisitoista kertaa, vai riittääkö kymmenen tai ehkä viisi?
Sitte lukeissaan he eivät ajattele mitään, vaan höpöttävät hyvin
kiireesti: tarataratarataa: yksi kerta, tarataratarataa: kaksi kertaa,
tarataratarataa: kolme kertaa j.n.e. — niin hyrisevät kuin rukinratas.
Sen vuoksi he eivät opi mitään, vaikka lukevat joskus enemmän kuin
ajattelevat lapset. Ja kun he eivät opi mitään, niin he jäävät
tyhmiksi. Ja kun he jäävät tyhmiksi, niin he eivät saa juuri mitään
aikaan maailmassa, vaikka kyllä suuria lupailevat. Ja kun he eivät
saa juuri mitään aikaan, niin he jäävät ihmiskunnalle velkaa paljon
työtä, jota sitten jälkeentulevien sukupolvien täytyy suorittaa heidän
puolestaan.

Minkä vuoksi nämät lapset niin tekevät? Minkä vuoksi heillä on


semmoinen kiire ja tilinpito niistä kerroista.
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebooknice.com

You might also like