ב-2014 הצטרף לתחנת הרדיו קול חי, והחל להגיש סדרת תוכניות בשם "שידורי המהפכה", . בדצמבר באותה שנה, מונה לכתב הפוליטי של "קול חי". ב-2015 הגיש את התוכנית השבועית "שישינייעס" בתחנה.
ב-2015 מונה לעורך ראשי באתר בחדרי חרדים. במרץ 2018 פרש מ"בחדרי חרדים", והחל להגיש תוכנית אקטואליה שבועית בימי חמישי בכאן מורשת מבית תאגיד השידור הישראלי. באוגוסט באותו שנה, לקראת הבחירות לרשויות המקומיות בישראל, מונה ליועץ תקשורת של המועמד לראשות עיריית ירושלים יוסי דייטש.
בנוסף שימש שורץ כיועץ אסטרטגי לתחנת הבת של רדיו "קול חי", קול חי מיוזיק, והחל מאוגוסט 2019 מגיש תוכנית מוזיקה שבועית "שעתיים לשבת", מדי יום שישי בתחנה.
ב-2020 בחלק מתקופת משבר הקורונה שימש כיועץ מטה ההסברה למגזר החרדי מטעם משרד הבריאות. לפני כן שימש כיועץ תוכן חרדים של הסדרה עוד ניפגש ששודרה בכאן 11.
Ceylon (שפת תכנות)
Ceylon היא שפה מונחת עצמים, חזקה, עם טיפוסי נתונים סטאטיים עם דגש על קיבוע אובייקטים, אשר נוצרה על ידי Red Hat. תוכניות Ceylon רצות על המכונה הווירטואלית של Java (JVM) וניתן להדר אותן ל-JavaScript.
עיצוב השפה מתמקד בקריאות קוד המקור, יכולת חיזוי, מודולריות ומידת תכנות.
תכונות חשובות של Ceylon כוללות:
השם "ציילון" הוא התייחסות מרומזת לג'אווה, בכך שג'אווה וסרי לנקה, שנקראו בעבר ציילון, הם איים הידועים בגידול ויצוא של קפה ותה מדרום להודו.
באוגוסט 2017 נתרמה Ceylon לקרן Eclipse.
מאפייני שפה.
Ceylon מושפע מאוד מהתחביר של ג'אווה, אך מוסיף תכונות חדשות רבות.
טיפוסים (TYPE) בשפה.
אחד ההיבטים החדשניים ביותר של Ceylon בהשוואה לג'אווה הוא מערכת הטיפוסים שלה. Ceylon וויתרה על הטיפוסים הפרימיטיביים ו'עיטופם' (wrapping, boxing) כפי שנעשה בג'אווה', לטובת מערכת טיפוסים המורכבת כולה מאובייקטים. אמנם הדבר עלול לגרום למצב של תקורת יתר של המערכת במצבים מסוימים (טיפוס פרימיטבי זול מבחינת זיכרון יחסית לאובייקט), אך זה הופך את מערכת הטיפוסים לאחידה יותר.
טיפוסים מאוחדים
Ceylon מאפשרת איחוד טיפוסים, באופן דומה ל- TypeScript, Whiley ו- Flow.
יש שתי אפשרויות של איחוד; Union כלומר איחוד וכן כלומר חיתוך.
טיפוס איחוד Union
טיפוס המאוחד על ידי האופרטור | (או), כתוב codice_1, מאפשר למשתנה להיות יותר מסוג אחד. הדוגמה הבאה מציגה פונקציה של Ceylon שעשויה לקבל מספר שלם או מחרוזת למשתנה המאוחד input:
shared void integerOrString(Integer|String input) {
if (is Integer input) {
print("Got the integer ``input``");
} else {
print("Got the string '``input``'");
טיפוס חיתוך Intersection
טיפוס המאוחד בחיתוך על ידי האופרטור &amp; (וגם) ונכתב codice_2, הוא הבסיס התאורטי המאפשר את כלומר למעשה את ההקלדה הדינאמית, בה אין עוד חובה להגדיר במדויק את טיפוס הנתון אלא הוא יכול להיות מחושב על ידי הקומפיילר מהמשך התנהגותו (בכך למעשה השפה הסטטית מאפשרת התנהגות דינאמית) דוגמה יותר מפורטת לעיקרון הזה כאן
shared void integerOrString(Integer|String input) {
Integer added = input + 6; // illegal; the + operator is not defined on Integer|String
if (is Integer input) {
Integer added = input + 6; // legal; input is now known to be an Integer
print("Got the integer ``input``");
} else {
print("Got the string '``input``'");
התנאי codice_3 מצמצם את סוג codice_4 להיות codice_5, אשר מחושב על ידי חוק הפילוג כ codice_6, אבל מכיוון ש codice_7 ו codice_8 טיפוסים שלא ניתן לחבר ביניהם, הפרוק שקול ל: codice_9
( codice_10 הוא טיפוס ריק בסיסי), כל הנ"ל הופך בסופו של דבר ל codice_8 בלבד שכעת ניתן לבצע עליו את האופרטור + או כל אופרטור אחר המוגדר עבור codice_8 בלבד.
בטיחות עבור ערכי Null.
סוגי האיחוד והחיתוך משמשים למתן ביטחון לשימוש ב Null . הטיפוס העליון של היררכית הטיפוסים של Ceylon הוא הקלאסcodice_13, שיש לו שתי תת-קבוצות: codice_14, מחלקת העל של כל הקלאסים הרגילים וכל הממשקים, ו codice_15, עם המופע היחיד codice_16.
מכיוון שcodice_14 ו- codice_15 הם טיפוסים שלא ניתן לאחד אותם בצורה רגילה, טיפוסים רגילים כמו codice_8 או &lt;codice_20 אינם מקבלים ערכי null;
אולם ניתן ליצור טיפוס אפיס שהוא האיחוד codice_21, או בכתיב מקוצר codice_22 ובכך לפתור הבעיה.
ניתן גם להשתמש בטיפוסי חיתוך כדי ליצור טיפוס שאינו אופציונלי מטיפוס שמאפשר אופציונליות, כגון פרמטר לטיפוס. לדוגמה, החתימה של פונקציה שמסירה codice_16 אלמנטים מזרם ערכים יכולה להיות:
Iterable&lt;Element&amp;Object&gt; removeNulls&lt;Element&gt;(Iterable&lt;Element&gt; stream);
כאשר נקרא codice_24 עם זרם של אלמנטים codice_21, התוצאה תהיה זרם של &lt; codice_26, המפושט ל- codice_8 .
פונקציות.
בדומה לשפות מודרניות רבות, Ceylon תומך בפונקציות מהשורה הראשונה ופונקציות מסדר גבוה, כולל פונקציות כטיפוס ופונקציות אנונימיות.
// A top-level higher-order function using block syntax (not associated with any user-created classes)
String process(String text, String transformString(String toChange)) {
return transformString(text);
// A top-level function calling String.reverse in expression form.
String reverse(String text) =&gt; text.reversed;
// A function reference to String.reversed but mostly equivalent to the function above.
String(String) reverseFunctionReference = String.reversed;
// An example where the top-level function above is provided as an argument to the higher-order function above
String reversed1 = process("one", reverse);
// Any example where an anonymous function - (text) =&gt; text+text - is provided to the higher-order function above.
String reversed2 = process("one", (text) =&gt; text+text);
Enumerated types - טיפוסים ספירים- ברי מניה.
בדומה לג'אווה ולשפות רבות אחרות, ועם מנגנון דומה לטיפוסים אלגבריים, Ceylon תומך בטיפוסים ספירים, הידועים גם בשם enums. זה מיושם בCeylon על ידי דפוס של הגבלת המופעים של class מופשט (abstract ) בהצהרה המגבילה את האובייקטים הנוצרים של ה class (במקרה זה, מקרים של סינגלטון). דרך נוספת ליישום דפוס זה היא עם תכונת הבנאי החדשה בCeylon 1.2, שם מיישמים את האובייקטים כהצהרות בנאי שונות.
// Traditional syntax for enumerated type, in this case, limiting the instances to three objects(for this purpose: Singletons)
// Compile error: type is not a subtype of any case of enumerated supertype: 'boat' inherits 'Vehicle'
// New (as of Ceylon 1.2.0) constructor-based syntax
class Vehicle of plane | train | automobile {
String name;
abstract new named(String pName) {
name = pName;
// Compile error: value constructor does not occur in of clause of non-abstract enumerated class: 'boat' is not listed in the of clause of 'Vehicle'
הסקה עצמית של הטיפוס.
כאמור Ceylon היא שפה 'חזקה' (במשמעות שלא עושה cast בעצמה ללא הוראה מפורשת) ו'סטטית' (כלומר לכל אובייקט צריך להיות מוצהר מה הטיפוס שלו), אך בכל זאת תומכת בהסקת הטיפוס (כלומר הצהרת הטיפוס יכולה להיות על ידי הקומפיילר ולא המתכנת). מילת המפתח codice_28 משמשת כדי להסיק את סוג המשתנה, ומילת המפתח codice_29 משמשת כדי להסיק את סוג הפונקציה. שתי ההגדרות הבאות שוות זו לזו:
Integer i = 3;
value i = 3;
Integer add(Integer i1, Integer i2) {
return i1 + i2;
function add(Integer i1, Integer i2) {
return i1 + i2;
עם זאת, ברור שהצהרה כזו תעבוד רק בפונקציה שמחשבת לבד את הערך המוחזר ללא קריאה לפונקציות אחרות.
נקודת כניסה עם שמות.
כברירת מחדל המתנע ( codice_30 ) מפעיל את פונקציית הריצה המשותפת של מודול- shared run():
/* The classic Hello World program */
shared void run() {
print("Hello, World!");
אבל כל פונקציה משותפת אחרת ללא פרמטרים יכולה לשמש כקריאה ראשית לתוכנית עם הפרמטר --run, כמו זה:
codice_31
גרסאות.
גרסאות של Ceylon ששוחררו:
רישיון.
כל חלקי Ceylon זמינים כתוכנה חופשית, לרוב רישיון Apache . חלק מקוד המקור מורשה תחת LGPL.
גו וסט
גו וסט הוא הרכב פופ בריטי, שהוקם בשנת 1982 על ידי הסולן הראשי פיטר קוקס וגיטריסט הקצב ונגן הגיבוי ריצ'רד דראמי . ההרכב זכה לפופולריות בין אמצע שנות השמונים לתחילת שנות התשעים, והוא ידוע בעיקר בזכות הלהיטים: "We Close Our Eyes", "Call Me", "Faithful" ו-"King of Wishly Thinking".
היסטוריה.
בשנת 1982 הקימו פיטר קוקס וריצ'רד דראמי את להקת "גו וסט", עם קוקס כסולן ודראמי בגיטרה וכזמר ליווי.
סינגל הבכורה של גו וסט, "We Close Our Eyes", יצא בשנת 1985 והגיע למקום החמישי במצעד הסינגלים של בריטניה. "We Close Our Eyes" היה הסינגל שהגיע למקום הגבוה ביותר מבין שירי הלהקה.
אלבום הבכורה המפורסם של הצמד יצא בשנת 1985. הוא כלל את "We Close Our Eyes" ,"Call Me" ו"Don't Look Down".
Bangs and Crashes, אלבום הרמיקסים, B-sides וקטעים חיים, יצא בשנת 1986, וכלל את השיר "One Way Street" שהיה חלק מפסקול הסרט רוקי 4.