Hpy

From Python
(Difference between revisions)
Jump to: navigation, search
m (eltorla)
m (Reverted edits by OloouRictr (Talk); changed back to last version by Cben)
Line 1: Line 1:
pasolo
 
 
<div dir="rtl">
 
<div dir="rtl">
  
חבילה המאפשרת להריץ תסריטי פייתון בעברית.
+
חבילה המאפשרת להריץ תסריטי פייתון בעברית.
  
== ענף ראשי ==
+
== ענף ראשי ==
  
*אתר: http://nirs.freeshell.org/code/hpy/
+
*אתר: http://nirs.freeshell.org/code/hpy/
*גרסה אחרונה: http://nirs.freeshell.org/hpy/hpy-0.2.tar.gz
+
*גרסה אחרונה: http://nirs.freeshell.org/hpy/hpy-0.2.tar.gz
  
== מפתחים ==
+
== מפתחים ==
  
מי שרוצה להשתתף בפיתוח, נא להשתמש בגרסה האחרונה שאותה אפשר להוריד בעזרת bazaar 0.9:
+
מי שרוצה להשתתף בפיתוח, נא להשתמש בגרסה האחרונה שאותה אפשר להוריד בעזרת bazaar 0.9:
 
<div dir="ltr">
 
<div dir="ltr">
 
  bzr branch http://nirs.freeshell.org/code/hpy/
 
  bzr branch http://nirs.freeshell.org/code/hpy/
 
</div>
 
</div>
  
נא לפרסם כאן את הענפים הפרטיים שלכם על מנת שאפשר יהיה למזג אותם לתוך הענף הראשי.
+
נא לפרסם כאן את הענפים הפרטיים שלכם על מנת שאפשר יהיה למזג אותם לתוך הענף הראשי.
  
=== בני ===
+
=== בני ===
  
 
<div dir="ltr">
 
<div dir="ltr">
Line 26: Line 25:
 
http://cben-hacks.sf.net/hpy.tar.gz
 
http://cben-hacks.sf.net/hpy.tar.gz
  
(ה־tar.gz מכיל גם ספריה של <span dir="ltr">.bzr</span> למקרה ש־bzr לא יעבוד טוב מול האתר)
+
(ה־tar.gz מכיל גם ספריה של <span dir="ltr">.bzr</span> למקרה ש־bzr לא יעבוד טוב מול האתר)
  
=== קובי ===
+
=== קובי ===
  
 
<div dir="ltr">
 
<div dir="ltr">
Line 34: Line 33:
 
</div>
 
</div>
  
=== עמית ===
+
=== עמית ===
  
  
== תוכניות לדוגמא ==
+
== תוכניות לדוגמא ==
  
שלום עולם:
+
שלום עולם:
 
<pre>
 
<pre>
הדפס "שלום עולם!"
+
הדפס "שלום עולם!"
 
</pre>
 
</pre>
  
עצרת:
+
עצרת:
 
<pre>
 
<pre>
הגדר עצרת(מספר):
+
הגדר עצרת(מספר):
     אם מספר == 0:
+
     אם מספר == 0:
         החזר 1
+
         החזר 1
     החזר מספר * עצרת(מספר - 1)
+
     החזר מספר * עצרת(מספר - 1)
 
</pre>
 
</pre>
  
סדרת פיבונאצ'י
+
סדרת פיבונאצ'י
 
<pre>
 
<pre>
א, ב = 0, 1
+
א, ב = 0, 1
כלעוד ב < 1000:
+
כלעוד ב < 1000:
     הדפס ב,
+
     הדפס ב,
     א, ב = ב, א + ב
+
     א, ב = ב, א + ב
 
</pre>
 
</pre>
  
שילוב עם קוד קיים:
+
שילוב עם קוד קיים:
 
<pre>
 
<pre>
 
import os
 
import os
לכל קובץ בתוך os.listdir(os.getcwd()):
+
לכל קובץ בתוך os.listdir(os.getcwd()):
     הדפס קובץ
+
     הדפס קובץ
 
</pre>
 
</pre>
  
99 בקבוקים של בירה
+
99 בקבוקים של בירה
 
<pre>
 
<pre>
לכל כמות בתוך range(99, 0, -1):
+
לכל כמות בתוך range(99, 0, -1):
     אם כמות > 1:
+
     אם כמות > 1:
         הדפס כמות, "בקבוקי בירה על הקיר,", כמות, "בקבוקים של בירה."
+
         הדפס כמות, "בקבוקי בירה על הקיר,", כמות, "בקבוקים של בירה."
         אם כמות > 2:
+
         אם כמות > 2:
             סיומת = str(כמות - 1) + " בקבוקי בירה על הקיר."
+
             סיומת = str(כמות - 1) + " בקבוקי בירה על הקיר."
         אחרת:
+
         אחרת:
             סיומת = "בקבוק בירה אחד על הקיר."
+
             סיומת = "בקבוק בירה אחד על הקיר."
     אחרתאם כמות == 1:
+
     אחרתאם כמות == 1:
         הדפס "בקבוק אחד של בירה על הקיר, בקבוק אחד של בירה."
+
         הדפס "בקבוק אחד של בירה על הקיר, בקבוק אחד של בירה."
         סיומת = "אין יותר בקבוקי בירה על הקיר!"
+
         סיומת = "אין יותר בקבוקי בירה על הקיר!"
     הדפס "קח אחד, תעביר אותו הלאה,", סיומת
+
     הדפס "קח אחד, תעביר אותו הלאה,", סיומת
     הדפס "--"
+
     הדפס "--"
 
</pre>
 
</pre>
  
== איך מתבצע התרגום ==
+
== איך מתבצע התרגום ==
  
מתאפשר ע"י קידוד, בשילוב עם מילון ו\או עטיפה (עדיין לא ברור מה השילוב המנצח).
+
מתאפשר ע"י קידוד, בשילוב עם מילון ו\או עטיפה (עדיין לא ברור מה השילוב המנצח).
  
=== קידוד ===
+
=== קידוד ===
  
לא משנה מה נעשה עם שמות מוכרים, המשתמש תמיד יכול להשתמש בשמות לא מוכרים בעברית (לשמות משתנים, פוקציות ומודולים שלו).
+
לא משנה מה נעשה עם שמות מוכרים, המשתמש תמיד יכול להשתמש בשמות לא מוכרים בעברית (לשמות משתנים, פוקציות ומודולים שלו).
זה ממומש ע"י תרגום שמות לא מוכרים לאנגלית כגון ע"י ייצוג hex של utf-8 בתוספת "hpy_" בהתחלהלמשל "אבג" הופך ל־hpy_d790d791d792.
+
זה ממומש ע"י תרגום שמות לא מוכרים לאנגלית כגון ע"י ייצוג hex של utf-8 בתוספת "hpy_" בהתחלהלמשל "אבג" הופך ל־hpy_d790d791d792.
  
=== מילון ===
+
=== מילון ===
  
יש מילון מרכזיכל מילה עברית שמופיעה בו מוחלפת בתרגום האנגלי שלה.
+
יש מילון מרכזיכל מילה עברית שמופיעה בו מוחלפת בתרגום האנגלי שלה.
  
ברור שמשתמשים במילון עבור מילות המפתח.
+
ברור שמשתמשים במילון עבור מילות המפתח.
אפשר להשתמש בזה גם לתרגום שמות מודולים ושמות בתוכם.
+
אפשר להשתמש בזה גם לתרגום שמות מודולים ושמות בתוכם.
  
=== עטיפה ===
+
=== עטיפה ===
  
נגיד שהמשתמש רוצה לבצע "יבא צב; צב.קדימה(10)".
+
נגיד שהמשתמש רוצה לבצע "יבא צב; צב.קדימה(10)".
אפשר לא לתרגם את המילים "צב" ו"קדימה" במילון המרכזי אלא לאפשר להן לעבור קידוד:
+
אפשר לא לתרגם את המילים "צב" ו"קדימה" במילון המרכזי אלא לאפשר להן לעבור קידוד:
מה שבאמת יתבצע יהיה
+
מה שבאמת יתבצע יהיה
 
"import hpy_d7a6d791; hpy_d7a6d791.hpy_d7a7d793d799d79ed794(10)".
 
"import hpy_d7a6d791; hpy_d7a6d791.hpy_d7a7d793d799d79ed794(10)".
  
כדי שזה יעבוד פשוט יוצרים מודול ששמו hpy_d7a6d791.py (צב) שכתוב בו:
+
כדי שזה יעבוד פשוט יוצרים מודול ששמו hpy_d7a6d791.py (צב) שכתוב בו:
  
 
  from turtle import *
 
  from turtle import *
 
  hpy_d7a7d793d799d79ed794 = forward
 
  hpy_d7a7d793d799d79ed794 = forward
  
וכן הלאה...
+
וכן הלאה...
  
== פרויקטים קשורים ==
+
== פרויקטים קשורים ==
  
=== מאמא ===
+
=== מאמא ===
  
תוכנה מסחרית לחלונות. דומה להפליא במטרות ובדקדוק. מאושרת על ידי משרד החינוך. אפשר ללמוד ממנה הרבה על מה שצריך להיות במערכת כזאת.
+
תוכנה מסחרית לחלונות. דומה להפליא במטרות ובדקדוק. מאושרת על ידי משרד החינוך. אפשר ללמוד ממנה הרבה על מה שצריך להיות במערכת כזאת.
  
 
*http://www.mh2000.co.il/mama
 
*http://www.mh2000.co.il/mama
 
*http://www.mh2000.co.il/mama/mama_design.pdf
 
*http://www.mh2000.co.il/mama/mama_design.pdf
*http://www.csit.org.il/Main/default.aspx?MenuShow=DOCS&Doc_ID=36 - מערכת לימוד
+
*http://www.csit.org.il/Main/default.aspx?MenuShow=DOCS&Doc_ID=36 - מערכת לימוד
  
ניתוח [בני]: זה לא סתם דומה, זה '''לחלוטין פייתון'''!  ההבדלים היחידים שמצאתי: אין : בסוף שורה, השמה ×¢"י :=, () לרשימות ו- [] למילונים, ואופרטורים על רשימות מתנהגים שונה (חיבור\כפל לפי איברים במקום שרשור\חזרה).  וזהוחבל שהוא לא מציין את פייתון בתור מקור ההשראה שלולא נורא, משמח מאוד שזה אושר ×¢"י משרד החינוך!
+
ניתוח [בני]: זה לא סתם דומה, זה '''לחלוטין פייתון'''!  ההבדלים היחידים שמצאתי: אין : בסוף שורה, השמה ע"י :=, () לרשימות ו- [] למילונים, ואופרטורים על רשימות מתנהגים שונה (חיבור\כפל לפי איברים במקום שרשור\חזרה).  וזהוחבל שהוא לא מציין את פייתון בתור מקור ההשראה שלולא נורא, משמח מאוד שזה אושר ע"י משרד החינוך!
נקודות חיוביות שכדאי ללמוד מהן:
+
נקודות חיוביות שכדאי ללמוד מהן:
* שגיאות מלוות בהמלצות איך לתקן את הבעיה
+
* שגיאות מלוות בהמלצות איך לתקן את הבעיה
* הרבה דרכים לאיית אותו דבר (זכר\נקבה, כתיב חסר\מלא)
+
* הרבה דרכים לאיית אותו דבר (זכר\נקבה, כתיב חסר\מלא)
* גישה נוחה ל-pickle
+
* גישה נוחה ל-pickle
  
=== לוגו ===
+
=== לוגו ===
  
*http://www.csit.org.il/main/default.aspx?MenuShow=DOCS&Doc_ID=33 תוכנית לימודים של משרד החינוך
+
*http://www.csit.org.il/main/default.aspx?MenuShow=DOCS&Doc_ID=33 תוכנית לימודים של משרד החינוך
*http://cse.proj.ac.il/tevel/index.htm - על סביבת תבל - תכנות בסביבת לוגו
+
*http://cse.proj.ac.il/tevel/index.htm - על סביבת תבל - תכנות בסביבת לוגו
 
*http://el.media.mit.edu/logo-foundation
 
*http://el.media.mit.edu/logo-foundation
  
=== קארל הרובוט ===
+
=== קארל הרובוט ===
  
*http://www.csit.org.il/Main/default.aspx?MenuShow=DOCS&Doc_ID=38 - תוכנית לימודים של משרד החינוך
+
*http://www.csit.org.il/Main/default.aspx?MenuShow=DOCS&Doc_ID=38 - תוכנית לימודים של משרד החינוך
 
*http://csis.pace.edu/~bergin/#kjr
 
*http://csis.pace.edu/~bergin/#kjr
 
*http://www.mtsu.edu/~untch/karel/index.html
 
*http://www.mtsu.edu/~untch/karel/index.html
Line 145: Line 144:
 
*http://gvr.sourceforge.net
 
*http://gvr.sourceforge.net
  
שפת תכנות פשוטה ביותר מבוססת על פייתון, המאפשרת לשלוט ברובוט בתוך עולם. יש מערכת שיעורים מצויינת שאפשר לתרגם.
+
שפת תכנות פשוטה ביותר מבוססת על פייתון, המאפשרת לשלוט ברובוט בתוך עולם. יש מערכת שיעורים מצויינת שאפשר לתרגם.
  
*דוגמא טובה לפתרון פשוט שיכול לשמש לילדים צעירים.
+
*דוגמא טובה לפתרון פשוט שיכול לשמש לילדים צעירים.
*מצד שני, העובדה שזה '''לא''' פייתון אלא שפה מוגבלת היא חסרון משמעותי בעיני רבים.
+
*מצד שני, העובדה שזה '''לא''' פייתון אלא שפה מוגבלת היא חסרון משמעותי בעיני רבים.
  
 
=== RUR-PLE ===
 
=== RUR-PLE ===
Line 154: Line 153:
 
http://rur-ple.sourceforge.net/en/help.htm
 
http://rur-ple.sourceforge.net/en/help.htm
  
פרוייקט דומה ל־GvR אבל מלמד פייתון ממש ולא איזה שפה מוגבלת.
+
פרוייקט דומה ל־GvR אבל מלמד פייתון ממש ולא איזה שפה מוגבלת.
  
נ.ב. [http://en.wikipedia.org/wiki/R.U.R._(Rossum's_Universal_Robots) Rossum's Universal Robots] זה השם של המחזה המקורי של קרל צ'פק בו הוא המציא את המילה רובוטצירוף מקרים משעשע ביותר (ולא ברור למה מפתחי PyKarel ו־GvR לא עלו עליו)!
+
נ.ב. [http://en.wikipedia.org/wiki/R.U.R._(Rossum's_Universal_Robots) Rossum's Universal Robots] זה השם של המחזה המקורי של קרל צ'פק בו הוא המציא את המילה רובוטצירוף מקרים משעשע ביותר (ולא ברור למה מפתחי PyKarel ו־GvR לא עלו עליו)!
  
 
=== KPL ===
 
=== KPL ===
Line 162: Line 161:
 
*http://www.kidsprogramminglanguage.com/kids.php
 
*http://www.kidsprogramminglanguage.com/kids.php
  
לא ממש רלוונטי: השפה די גרועה (דומה ל־VB), והשפה עצמה לא תורגמה (רק הסביבה).
+
לא ממש רלוונטי: השפה די גרועה (דומה ל־VB), והשפה עצמה לא תורגמה (רק הסביבה).
  
 
=== Squeak ===
 
=== Squeak ===
Line 168: Line 167:
 
*http://www.squeakland.org
 
*http://www.squeakland.org
  
מערכת smalltalk חופשית עם סביבת מולטימדיה עשירה. נדמה לי שאין שום תמיכה בעברית כרגע. אפשר ללמוד ממנה הרבה.
+
מערכת smalltalk חופשית עם סביבת מולטימדיה עשירה. נדמה לי שאין שום תמיכה בעברית כרגע. אפשר ללמוד ממנה הרבה.
  
 
</div>
 
</div>

Revision as of 00:19, 27 December 2008

חבילה המאפשרת להריץ תסריטי פייתון בעברית.

Contents

ענף ראשי

מפתחים

מי שרוצה להשתתף בפיתוח, נא להשתמש בגרסה האחרונה שאותה אפשר להוריד בעזרת bazaar 0.9:

נא לפרסם כאן את הענפים הפרטיים שלכם על מנת שאפשר יהיה למזג אותם לתוך הענף הראשי.

בני

http://cben-hacks.sf.net/hpy.tar.gz

(ה־tar.gz מכיל גם ספריה של .bzr למקרה ש־bzr לא יעבוד טוב מול האתר)

קובי

עמית

תוכניות לדוגמא

שלום עולם:

הדפס "שלום עולם!"

עצרת:

הגדר עצרת(מספר):
    אם מספר == 0:
        החזר 1
    החזר מספר * עצרת(מספר - 1)

סדרת פיבונאצ'י

א, ב = 0, 1
כלעוד ב < 1000:
    הדפס ב,
    א, ב = ב, א + ב

שילוב עם קוד קיים:

import os
לכל קובץ בתוך os.listdir(os.getcwd()):
    הדפס קובץ

99 בקבוקים של בירה

לכל כמות בתוך range(99, 0, -1):
    אם כמות > 1:
        הדפס כמות, "בקבוקי בירה על הקיר,", כמות, "בקבוקים של בירה."
        אם כמות > 2:
            סיומת = str(כמות - 1) + " בקבוקי בירה על הקיר."
        אחרת:
            סיומת = "בקבוק בירה אחד על הקיר."
    אחרתאם כמות == 1:
        הדפס "בקבוק אחד של בירה על הקיר, בקבוק אחד של בירה."
        סיומת = "אין יותר בקבוקי בירה על הקיר!"
    הדפס "קח אחד, תעביר אותו הלאה,", סיומת
    הדפס "--"

איך מתבצע התרגום

מתאפשר ע"י קידוד, בשילוב עם מילון ו\או עטיפה (עדיין לא ברור מה השילוב המנצח).

קידוד

לא משנה מה נעשה עם שמות מוכרים, המשתמש תמיד יכול להשתמש בשמות לא מוכרים בעברית (לשמות משתנים, פוקציות ומודולים שלו). זה ממומש ע"י תרגום שמות לא מוכרים לאנגלית כגון ע"י ייצוג hex של utf-8 בתוספת "hpy_" בהתחלה. למשל "אבג" הופך ל־hpy_d790d791d792.

מילון

יש מילון מרכזי. כל מילה עברית שמופיעה בו מוחלפת בתרגום האנגלי שלה.

ברור שמשתמשים במילון עבור מילות המפתח. אפשר להשתמש בזה גם לתרגום שמות מודולים ושמות בתוכם.

עטיפה

נגיד שהמשתמש רוצה לבצע "יבא צב; צב.קדימה(10)". אפשר לא לתרגם את המילים "צב" ו"קדימה" במילון המרכזי אלא לאפשר להן לעבור קידוד: מה שבאמת יתבצע יהיה "import hpy_d7a6d791; hpy_d7a6d791.hpy_d7a7d793d799d79ed794(10)".

כדי שזה יעבוד פשוט יוצרים מודול ששמו hpy_d7a6d791.py (צב) שכתוב בו:

from turtle import *
hpy_d7a7d793d799d79ed794 = forward

וכן הלאה...

פרויקטים קשורים

מאמא

תוכנה מסחרית לחלונות. דומה להפליא במטרות ובדקדוק. מאושרת על ידי משרד החינוך. אפשר ללמוד ממנה הרבה על מה שצריך להיות במערכת כזאת.

ניתוח [בני]: זה לא סתם דומה, זה לחלוטין פייתון! ההבדלים היחידים שמצאתי: אין : בסוף שורה, השמה ע"י :=, () לרשימות ו- [] למילונים, ואופרטורים על רשימות מתנהגים שונה (חיבור\כפל לפי איברים במקום שרשור\חזרה). וזהו! חבל שהוא לא מציין את פייתון בתור מקור ההשראה שלו. לא נורא, משמח מאוד שזה אושר ע"י משרד החינוך! נקודות חיוביות שכדאי ללמוד מהן:

  • שגיאות מלוות בהמלצות איך לתקן את הבעיה
  • הרבה דרכים לאיית אותו דבר (זכר\נקבה, כתיב חסר\מלא)
  • גישה נוחה ל-pickle

לוגו

קארל הרובוט

Guido van Robot

שפת תכנות פשוטה ביותר מבוססת על פייתון, המאפשרת לשלוט ברובוט בתוך עולם. יש מערכת שיעורים מצויינת שאפשר לתרגם.

  • דוגמא טובה לפתרון פשוט שיכול לשמש לילדים צעירים.
  • מצד שני, העובדה שזה לא פייתון אלא שפה מוגבלת היא חסרון משמעותי בעיני רבים.

RUR-PLE

http://rur-ple.sourceforge.net/en/help.htm

פרוייקט דומה ל־GvR אבל מלמד פייתון ממש ולא איזה שפה מוגבלת.

נ.ב. Rossum's Universal Robots זה השם של המחזה המקורי של קרל צ'פק בו הוא המציא את המילה רובוט. צירוף מקרים משעשע ביותר (ולא ברור למה מפתחי PyKarel ו־GvR לא עלו עליו)!

KPL

לא ממש רלוונטי: השפה די גרועה (דומה ל־VB), והשפה עצמה לא תורגמה (רק הסביבה).

Squeak

מערכת smalltalk חופשית עם סביבת מולטימדיה עשירה. נדמה לי שאין שום תמיכה בעברית כרגע. אפשר ללמוד ממנה הרבה.

Personal tools