אני עוד אתגעגע ל Facade
תבנית העיצוב Facade היא אוביקט שנמצא לפני ספריה אחרת ומסתיר התנהגות מסובכת או מורכבת יותר. המטרה המרכזית של Facade היא לאפשר לנו לכתוב קוד יותר קצר או קריא, או לתת פיתרון ל Use Case מסוים שבו לא צריך את כל המורכבות של ספריה אחרת.
לדוגמה בפייתון הספריה requests עוטפת את ממשק התקשורת של השפה ומספקת דרך קלה יותר למשוך מידע מהרשת. יש לה גם יותר פיצ'רים כמובן. ביקשתי מהבוט תוכניות דוגמה עם ובלי requests וזה מה שקיבלתי, תוכנית ראשונה בלי requests רק פייתון:
import urllib.request
import json
def get_data_using_urllib():
url = "https://api.example.com/data"
# 1. Create a request object (so you can set headers if you need)
req = urllib.request.Request(url, headers={"Accept": "application/json"})
try:
# 2. Open the URL
with urllib.request.urlopen(req) as response:
# 3. Check the status code
if response.status == 200:
# 4. Read and parse JSON data
raw_data = response.read()
data = json.loads(raw_data)
print("Data fetched using urllib:", data)
else:
print(f"Error: status code = {response.status}")
except Exception as e:
print("An error occurred:", e)
if __name__ == "__main__":
get_data_using_urllib()
תוכנית שניה עם requests:
import requests
def get_data_using_requests():
url = "https://api.example.com/data"
try:
# 1. Make a GET request
response = requests.get(url)
# 2. Raise an exception if the status is not 2xx
response.raise_for_status()
# 3. Parse JSON in one step
data = response.json()
print("Data fetched using Requests:", data)
except requests.exceptions.RequestException as e:
print("An error occurred:", e)
if __name__ == "__main__":
get_data_using_requests()
אחלה פסאדה נכון? אז למה שנתגעגע אליה? אני חושב שזו אשמת אותו בוט בדיוק שיצר את שתי התוכניות. אם פעם ההתלבטות לגבי כתיבת אבסטרקציה חדשה התרכז בעלות של פיתוח אותה אבסטרקציה (תחזוקה, שידרוג כל פעם שהתשתית שהפסאדה בנויה עליה מתעדכנת), בגלל Chat GPT אנחנו מתלבטים עכשיו גם לגבי הערך. כן ברור שעם ספריות קיימות כמו requests אין לו בעיה לכתוב קוד אבל אם אני כותב אבסטרקציה חדשה ה AI עדיין לא מכיר אותה, ולכן לא יוכל לכתוב איתה קוד. עכשיו נסו לדמיין שאתם צריכים להוציא בקשת רשת בפייתון, אופציה אחת היא לקחת את הקוד העובד ש Chat GPT נתן ואופציה שניה היא לשלב ספריה שמבטיחה לעשות את אותו דבר בפחות שורות. הבעיה שכש Chat GPT כותב את הקוד, כמות השורות היא כבר לא פקטור.
בראייה קדימה, נדמיין שנתיים קדימה כשכל הקוד שנקבל מ AI יעבוד, יהיה מאוד קשה לשכנע אנשים להשתמש בממשקים "קלים" במקום בממשקים ש Chat GPT יודע לייצר.