
كيف تكتب تسعة كتب عن تقنيات مختلفة تمامًا ، بما في ذلك Angular و Vue و React و React Native وغيرها؟ ما هو الأهم في التدريب ، ما هي "دردشة المدخل" وبشكل عام ، ما علاقة كل من دارت وفلوتر به؟
اليوم ، ضيفنا هو مؤلف العديد من الكتب والمقالات حول البرمجة ، بما في ذلك
ng-book -
Ari Lerner . ماذا سيكون الكتاب التالي ، ما يفكر المؤلف في مثل هذه ... لغة مثيرة للجدل مثل دارت ، ولماذا من المهم جدًا التواصل في المؤتمرات ، يسأل الرجال من لجنة برنامج مؤتمر HolyJS (
ديمتري دميتري ماكينيف ماخنيف ويوجين بونوبس كوت ).
- مرحبًا. ستكون هناك ثلاثة أقسام في مقابلتنا ، في الأول سنتحدث عنك ، في الثاني عن Flutter ، والثالث سيكون نهائيًا. دعنا أولاً نخبرك قليلاً عن نفسك؟- بادئ ذي بدء ، أود أن أشكرك على الدعوة - يسعدني جدًا أن تتاح لي الفرصة للتحدث في HolyJS. أما بالنسبة لي ، فأنا أعيش في بروكلين في نيويورك وأبرمج بقدر ما أتذكر - كانت لغتي الأولى هي اللغة المجمعة في أوائل التسعينات. في الوقت الحالي ، أنا منخرط في blockchains والتعلم العميق ، حتى الآن بشكل منفصل. بالنسبة للجزء الأكبر ، أعمل مع العملاء ، وأساعدهم في دخول ICO (عروض العملات الأولية) ، وأساعدهم على العمل باستخدام اقتصاديات رمزية. وكذلك معي يعيش كلب مبهج جينجر ، صليب بين تشيهواهوا وكورجي - يمكنني التحدث عنه بلا نهاية.
"كيف تبدو؟" حجم الشيواوا ، ولكن أشعث ، مثل فصيل كورجي؟- نعم ، هذا كورجي أصغر مع وجه تشيهواهوا. جميل جدا.
- ماذا تكسب الآن؟ هل تكتب كتبًا أو تعمل في شركة؟- كلاهما ، وآخر. أنا أكتب كتابًا ، لكنه لم يعد يستغرق كل وقتي. حتى قررت ما يجب القيام به بعد ذلك ، أعمل لنفسي.
- كما أفهمها ، منذ 5 أو 6 سنوات ، أسست Fullstack.io؟- نعم ، كان عام 2012.
- حدثنا عنه.- يتكون Fullstack من جزأين ، وهو ناشر للكتب المدرسية حول البرمجة ، بالإضافة إلى منصة تعليمية. فيما يتعلق بنشر الكتب المدرسية ، جمهورنا الرئيسي هو المطورين المحترفين ، ولكننا نقدم أيضًا الكتب المدرسية للجامعات والمدارس وبرامج التعليم المستمر. بالإضافة إلى ذلك ، نقوم بإجراء تدريبات عبر الإنترنت ونعيش ، كجزء من التعليم المستمر. نحن نعمل مع شركات مثل جنرال إلكتريك ، وول مارت ، ومع الجيش ، وما إلى ذلك.
- عظيم. هل تتنافس مع O'Reilly ، أو لديك منطقة مختلفة تمامًا؟- نحن نقوم بأشياء متشابهة جدًا مع ما يفعله O'Reilly ، لكننا لا نتنافس معهم مباشرة ، لأن لدينا مقياسًا مختلفًا تمامًا - نحن لا نشكل تهديدًا لهيمنة O'Reilly العالمية على كتب البرمجة. بالإضافة إلى ذلك ، لدينا نهج مختلف قليلاً. عادة ، لا يتم تحديث الكتب بعد النشر ، لذا بمجرد قراءتها ، تصبح قديمة بالفعل. إذا قمت بشراء كتاب منا ، فإننا نقدم معه تحديثات مستمرة.
- هل تنشرون كتبًا ورقية أو إلكترونية فقط؟- كل من هؤلاء وغيرهم. نبيع الكتب الورقية من خلال أمازون ، ولكن لا يمكن تحديثها. يتم تحديث الكتب الإلكترونية المشتراة على Fullstack تلقائيًا. لا يمكنك التحديث من خلال أمازون - لديهم تحكم مشدد للغاية.
- كما أفهمها ، أنت مؤلف مشارك لكثير من الكتب على Fullstack.io - Fullstack React و Fullstack React Native وبالطبع كتاب ng الشهير. لكتابة كتاب ، يجب أن تكون على دراية كبيرة بموضوع الموضوع الذي تكتب عنه - سواء كان الزاوي أو رد الفعل أو Vue أو أي شيء آخر. كيف يبدو استعدادك لكتابة كتاب؟- سؤال جيد. دعني أخبرك أولاً كيف بدأت كتابة الكتب ، ولماذا أحب هذا الدرس؟ ثم دعنا ننتقل إلى كيفية سير العمل في كل كتاب على حدة.
"نعم بالطبع."- في عام 2012 ، وصلت إلى الحد الأقصى في الشركة التي عملت فيها ، وقررت أن الوقت قد حان للمغادرة. لقد أنشأت شركة ناشئة - صدق أو لا تصدق ، لكنها كانت شركة جدولة. بالنسبة لها ، كتبت خلفية أنيقة في Erlang و Python ، على ما يبدو ، مع لمسة من روبي. ولكن لم تكن هناك واجهة جيدة ، لذلك بدأت باستكشاف أطر عمل مختلفة وصادفت Angular. لقد مر وقت طويل قبل الإصدار 1.0. لقد بدأت في كتابة واجهة أمامية لبدء التشغيل ، وأعجبني حقًا Angular ، لكن الوثائق الخاصة بها كانت فظيعة. لفهم كيفية عمل هذا الإطار ، بدأت في قراءة الكود المصدري ومعرفة كيفية عمله - هكذا أصبحت مألوفة مع Angular.
في نفس الوقت تقريبًا ، طُلب مني التحدث عن JavaScript في معسكر تدريب للمطورين في سان فرانسيسكو ، ثم أدركت أنني أحب التدريس حقًا. لذلك قررت الجمع بين هذين الاهتمامين وبدأت في كتابة دليل صغير لـ Angular للمبتدئين. اعتقدت في البداية أنها ستكون صفحتين أو ثلاث صفحات من النص ، ولكن في النهاية كان هناك 650 صفحة واصلت تحديثها على مر السنين. في النهاية أصبحت مؤلفًا أو مؤلفًا مشاركًا لتسعة كتب. قمت بالتدريس كمتطوع في كل معسكر تدريب مطور رئيسي في سان فرانسيسكو. أتطوع أيضًا مع منظمات مثل Women Who Code و Bridge Foundry ، وأدرّس ElixirBridge. حتى أنني قدمت دروسًا في سجن عام في منطقة خليج سان فرانسيسكو ، وما زلت أدرس هنا في نيويورك.
التدريس مهم جدًا بالنسبة لي ، فهو يحفزني على تعلم المزيد بنفسي. من خلال التدريس ، لا أساعد الآخرين فحسب ، بل أجبر نفسي على الارتقاء إلى مستوى جديد لكي أتمكن من شرح كيفية عمل هذه التكنولوجيا أو تلك. أستعد عادة بقراءة المصدر ، وخاصة جافا سكريبت. قبل عام أو نصف ، التقينا بـ Vue ، وبدأنا للتو في دراسة المصدر ، جلب لنا عملنا مع Vue متعة كبيرة. أثناء عملي ، أكتب جميع المشاكل التي أواجهها ، وجميع استعلامات البحث على Google ، وجميع الأسئلة المتعلقة بالوثائق. ونتيجة لذلك ، نقوم بتجميع جدول محتويات ضخم ومفصل للغاية ، وبعد ذلك ، مع أي تغييرات ، نقوم بتحديثه مع الكتاب بأكمله.
- هل يحدث ذلك تلقائيًا بمساعدة المعالجات التي تراقب كل هذه المعلومات في الوثائق؟- لدينا معالجات تتتبع دورات الإصدار ، ولكن للأسف ، كل شيء آخر تقريبًا - تحرير المحتوى والصور - يتم يدويًا. لدينا تفاعلات على React ولدينا تحديثات تلقائية للكود ، ولكن يجب تحديث المحتوى يدويًا.
- فهمت. على حد علمي ، أنت مؤلف مشارك لكثير من الكتب. هل من الصعب كتابة كتاب بمفرده أو مع شخص ما؟ كيف تنظم عملك ، كيف تقوم بمزامنة الفصول؟- تمامًا مثل تطوير التطبيقات المشتركة ، نستخدم Git لتوحيد المحتوى ، لذلك لدينا إصدارات وفروع. قد تكون كتابة كتاب بالتعاون أمرًا صعبًا ، على الرغم من أنني أعتقد أنه أسهل إلى حد ما في حالة الكتب في التخصصات الفنية من تلك غير الفنية. أعتقد أن أصعب شيء هو ضمان نغمة موحدة لجميع الأقسام ، وتحديد العروض التوضيحية التي يجب استخدامها. ولكن ، بشكل عام ، هذه ليست مهمة صعبة للغاية. يتم استيعاب كل الانتباه عن طريق الكتابة والتحرير ، ونحن على اتصال دائم ببعضنا البعض ، مما يبسط العملية إلى حد كبير. على مر السنين ، قمنا بتطوير قوالب الكتابة التي توفر وحدة الأسلوب لجميع مؤلفينا العديدين. ونحن نبذل قصارى جهدنا لضمان أن يكتب مؤلفونا المشاركون معنا ، وليس لنا. نحن نضع أنفسنا كفريق يعمل فيه الجميع مع بعضهم البعض ، وليس كشركة نشر يعمل المؤلفون من أجلها. بالإضافة إلى ذلك ، نحن جميعًا محررين مشاركين للكتب التي نكتبها. يساعد وجود محرر أو محررين على ضمان أسلوب متسق في جميع أنحاء الكتاب. يقوم كل مؤلف بتحرير قسم كتبه مؤلف آخر.
أما بالنسبة للأدوات ، فنحن نستخدم Git ، بالإضافة إلى برامج تحرير النصوص البسيطة و Markdown. عادة ما أعمل في Visual Studio Code أو Spacemacs - مزيج من Emacs و Vim ، نوصي بشدة إذا لم تجربه بعد. بالإضافة إلى ذلك ، لدينا الكثير من البرامج الخاصة بنا ، والتي قمنا بكتابتها لتجميعها ، والعمل مع أسلوب ومعاينة الكتب في الوقت الحقيقي. نستخدمه قبل نشر إصدار جديد أو تحديث كتاب. معظم أدواتنا مكتوبة بلغة JavaScript أو TypeScript أو Python.
- هل تستخدم منهجيات مرنة مثل سكروم عند كتابة الكتب؟- نعم ، ولكن ليس نشطًا جدًا. نعقد نوعًا من الاجتماعات الاحتياطية المعدلة ، ولكن ليس كل يوم ، ولكن كل أسبوع ، أو بعد أسبوع ، اعتمادًا على وتيرة العمل في الكتاب. إذا كنت أعمل بمفردي ، فإن وقفي كله هو أنني أفتح محرر النصوص الخاص بي ، ولكن إذا كنت أعمل مع شخص ما ، فإننا على اتصال دائم ببعضنا البعض من خلال Slack و Google Hangouts.
- وما الوقت الذي تستغرقه لكتابة كتاب؟- يعتمد على ما هو الكتاب ، سواء كنت أعمل مع المؤلفين المشاركين ، على سرعة الإطار. لنفترض أنني كتبت كتابًا في غضون أربعة أشهر ، وأعمل في المساء وفي عطلات نهاية الأسبوع. لكن بالنسبة لي هذه سرعة لا يمكن تخيلها على الإطلاق ، ما زلت لا أفهم كيف تمكنت من فعل الكثير. عادة ما يستغرق كتاب واحد من ستة إلى اثني عشر شهرًا.
- ممتع. تقضي الكثير من الوقت ، وتعمل مع أدوات وعمليات مثيرة للاهتمام ، ربما بالتعاون مع شخص آخر ، ثم تقدم الكتاب للمنشور. عندما يحاول الناشر ترجمة ثمرة أعمالك إلى لغة أخرى ، كيف يمكنك التحقق من جودة الترجمة؟ أسأل لأنه عندما بدأت البرمجة ، لم أتمكن من قراءة الوثائق الفنية باللغة الإنجليزية ، لذلك قرأت العديد من الكتب باللغة الروسية - على سبيل المثال ، ترجمة الأجزاء الجيدة من جافا سكريبت والكتب الأكثر شهرة من قبل O'Reilly. على حد علمي ، كانت هذه الترجمات رهيبة. أفكر في كيفية رد فعل مؤلفي الكتب على هذا ، ونوع الطريقة التي يمكن أن يتحققوا بها من الترجمات. ما رأيك بشكل عام في الترجمات؟- هنا يمكنني فقط التحدث عن تجربتي الشخصية وكيف يعمل Fullstack. لدينا العديد من المواقف عندما لا نعرف اللغة التي يتم ترجمة الكتاب إليها - على سبيل المثال ، معظم كتبنا مترجمة إلى اللغة الصينية ، لكنني لا أتحدث الصينية. صحيح ، بمرور الوقت ، تعلمت بضع كلمات ، لدي تطبيق خاص لهذا ، بابل ، والذي أتعلم فيه اللغات الأجنبية. ولكن في حالة اللغة الصينية ، تم الحصول على أفضل الترجمات عندما كان مترجمنا مبرمجًا في نفس الوقت. بفضل هذا ، لأي أسئلة ، كان من السهل على المترجم أن يسألنا سؤالًا باللغة الإنجليزية ، ثم يترجم الإجابة بشكل صحيح إلى الصينية. لسوء الحظ ، أنا لا أتكلم الروسية أيضًا. يمكنني أن أقول "دراجة" - على الرغم من ذلك ، كما تسمع ، لا أستطيع حتى أن أقول ذلك. بالطبع ، من الصعب عدم معرفة اللغة التي كُتب بها البرنامج. أفهم هذا جيدًا بشكل خاص عندما أنظر إلى توثيق المشاريع الصينية مفتوحة المصدر - من أجل فهم أي شيء ، يجب أن أتعمق في المصدر.
- كان موقف مماثل مع Vue. على حد علمي ، كانت إصداراته الأولى سيئة التوثيق إلى حد ما ، وتم وصف العديد من المشكلات باللغة الصينية. على حد علمي ، اللغة الإنجليزية هي الآن شرط.- نعم إنه كذلك. أنا محظوظ لأن لغتي الأم هي الإنجليزية. على الرغم من أنني لا أتحدثها بطلاقة ، ليس لدي أي مشاكل في التوثيق. أعتقد أن الترجمات مهمة للغاية. بالإضافة إلى ذلك ، نحن نعيش في وقت أصبحت فيه الترجمة الآلية أفضل بشكل متزايد ، خاصة بفضل التعلم العميق - وهذا أحد الأسباب التي جعلتني مهتمًا بالتعلم العميق. ومع ذلك ، لا أعتقد أن هناك دواء واحد لكل هذه المشاكل.
- صادفت مؤخرًا مناقشة حامية في قسم تويتر باللغة الروسية. جادل أحد جوانب النزاع بأن الترجمات ، بحكم تعريفها ، شريرة ، لأن المبرمجين يجب أن يعرفوا اللغة الإنجليزية ، وهي لغة دولية للجميع. قال آخرون أنه بالنسبة للصغار ومن لا يتحدثون الإنجليزية جيدًا ، يجب ترجمة الوثائق. هل لديك رأي في هذه القضية المثيرة للجدل؟"الحجج من كلا الجانبين قريبة مني". ما سأقوله الآن هو ردة فعلي الأولى ، ولم أفكر لفترة طويلة في هذه المشكلة. ربما في اجتماع شخصي يمكننا مناقشة هذا الموضوع بشكل أعمق. يبدو لي أن الكثير من التعليمات البرمجية مكتوبة باللغة الإنجليزية الآن مما يجعل التخلص من اللغة الإنجليزية أمرًا صعبًا للغاية. هناك لغات دولية - على سبيل المثال ، JavaScript هي لغة دولية ، إذا كنت تتحدثها ، فيمكنك التواصل مع أي شخص في أي مكان في العالم. إن وجود لغة دولية - الإنجليزية - يجعل من السهل علينا التواصل والتعاون مع المطورين في جميع أنحاء العالم ؛ على سبيل المثال ، تحدثت مع مطورين في الهند وفرنسا وإنجلترا والصين وأستراليا. بالطبع ، هذا ليس صحيحًا تمامًا فيما يتعلق بالأشخاص الذين لا يتحدثون الإنجليزية - أنا متأكد من أنني إذا لم أتحدث الإنجليزية ، فسيكون لدي رأي مختلف حول هذه المسألة. بالإضافة إلى ذلك ، كما قلت ، هذه مجرد أفكاري الأولية ، لم أفكر في هذه المشكلة لفترة طويلة ، وربما غدا سيتغير رأيي.
- نعم ، يمكننا مناقشة ذلك شخصيًا. الآن دعونا نتحدث عن الكتب - أصبحت أقل شعبية من ذي قبل ، بسبب ظهور منصات مثل وسائل الإعلام وتويتر وهلم جرا. هل تعتقد أن الكتب تختفي؟"لست مقتنعا بأن الكتب أصبحت أقل شعبية." أعتقد أن الجميع يعمل ويتعلم بطرق مختلفة. تتشابه الخدمات عبر الإنترنت في وظيفتها مع الفصول الدراسية. ويبدو لي أن التعلم عبر الإنترنت مناسب للمطورين الذين يرغبون في تعلم لغات وأطر عمل مختلفة بشكل مختلف. من السهل على البعض العمل مع الوثائق ، والبعض الآخر لشفرة المصدر ، والبعض يعمل بشكل أفضل في المجموعات ، والبعض الآخر وحده ، عن طريق التجربة والخطأ ، أو عن طريق قراءة الكتب في القطارات والطائرات ثم وضع الأشياء موضع التنفيذ. من ناحية أخرى ، قمت بالتدريس في فصول حيث كان كل شيء هو عكس ذلك تمامًا وحيث لم يتمكن الطلاب ببساطة من الجلوس في الكتاب ، وهذا لم يعطهم أي شيء. ليس الأمر أنهم لم يعرفوا كيفية القراءة على الإطلاق ، فهم يحصلون على قدر أقل من القراءة مقارنة بالعمل مع أشخاص آخرين. أعتقد أن أحد أهم إنجازات الإنترنت لمجتمع البرمجة هو أنه جعل التعلم أكثر سهولة ، والنجاح أكثر قابلية للتحقيق. تساعد المواقع والخدمات مثل Medium أو Coursera على نشر المعرفة وتمكين مجموعة متنوعة من فرص التعلم. أنا فخور بالمشاركة في تطور التعليم هذا. ربما ستصبح كتبنا تفاعلية في المستقبل ، ويمكننا دمجها مع الدورات عبر الإنترنت.
- أتذكر أنه بمجرد بيع الكتب على قرص مضغوط أو قرص DVD مع أمثلة. الآن هذا الشكل عفا عليه الزمن.- نعم ، يفضلون الآن إرسال كل شيء في أرشيف مضغوط - على سبيل المثال ، نقوم بدمج جميع العروض التوضيحية لدينا في أرشيف مضغوط واحد. تتيح لنا واحدة من أكثر الأدوات المفيدة التي طورناها كتابة جميع التعليمات البرمجية المصدر المستخدمة في الكتاب في مكان واحد ، ثم لدينا الأدوات التي تقوم بتحديثه تلقائيًا من المصادر الأصلية. لنفترض أننا بحاجة إلى إبراز سلسلة أو فئة أو كائن أو وظيفة نناقشها في كتاب. لدينا أدوات يمكنك من خلالها إنشاء روابط مباشرة إلى شفرة المصدر. هذا مفيد أيضًا لأنه في كل مرة تقوم فيها بتنزيل كتاب ، يتم تحديث المصدر. لذا فنحن لا نكتب المصادر مباشرة في النص ، ولكن في ملف منفصل.
- سؤالي التالي يتعلق بالسؤال السابق. لقد قلت أن الجميع يتعلم بطرق مختلفة ، وبصفتي مطورًا ، يمكنني قراءة الكتب ومشاهدة مقاطع الفيديو على YouTube وقراءة المقالات على بعض منصات التدريب. لكن لماذا علي حضور المؤتمرات؟- هذا سؤال جيد. مرتجلا ، يمكنني أن أذكر سببين لماذا هذا يستحق القيام به. الأول هو الأكثر وضوحًا: العروض التقديمية والمحاضرات في المؤتمرات عادةً ما تكون مدروسة جيدًا ومصممة خصيصًا للعرض. كقاعدة عامة ، يتم تخصيص هذا التقرير لمشكلة محددة جيدًا - على سبيل المثال ، إعادة الهيكلة. عندما تجلس في جمهور حيث يوجد تقرير جيد عن إعادة البيع ، يبدو الأمر كما لو كنت تعيد بناء نفسك ، فأنت مدرج في العرض التقديمي ، في هذه العملية. حسنًا ، بالنسبة لي ، فإن شخصية المتحدث وعواطفه مثيرة للاهتمام دائمًا.
السبب الثاني أقل وضوحا. أسميها "دردشة المدخل" - بالإضافة إلى التقارير نفسها ، تلتقي وتتواصل مع الأشخاص الذين يفعلون نفس الشيء الذي تفعله أنت. يكون نشاطنا كمطورين ، بحكم تعريفه ، فرديًا - ولكن عندما تبدأ في التواصل مع العديد من الأشخاص الآخرين الموجودين في نفس المساحة التي تشارك فيها والذين يشاركون فيك أنت ، يصبح هذا النشاط اجتماعيًا تلقائيًا. فائدة أخرى من "التحدث في الردهة" هي أن تلتقي بأشخاص يحتاجون إلى خدماتك أو معرفتك التقنية أو خبرة التدريس. في تجربتي ، نجد عملاء أكثر من أي مكان آخر - وهذا ينطبق حتى على كتبنا ومقاطع الفيديو الخاصة بنا.
- لقد كتبت بالفعل العديد من الكتب - أخبرني ، ما الذي تعمل عليه الآن؟ ربما بعض المفسدين؟- الآن أتعامل بشكل رئيسي مع blockchains. إذا تحدثنا عن blockchains ، والواقع المعزز ، والتعلم العميق ، فمن الرائع في هذه المناطق أنها تحظى بشعبية كبيرة الآن ، لذلك في كل مؤتمر حضرته تقريبًا خلال السنوات القليلة الماضية ، دخلت في مناقشات حية للغاية مع الأشخاص المهتمين بهذه الموضوعات. وغالبًا ما يكون مطور الواجهة الأمامية في Google ، الذي يتعامل في أوقات فراغه مع مواضيع أخرى.
بالنسبة لي شخصياً ، فإن المشاريع التي أتعامل معها تتعلق بشكل رئيسي بالاقتصاد - والأكثر إثارة للدهشة ، أن هذا موضوع مثير للاهتمام للغاية. بالإضافة إلى ذلك ، أعمل حاليًا على كتاب بعنوان "C ++ لمطوري جافا سكريبت" ، حتى الآن في مرحلة مبكرة من الكتابة. سأكون سعيدًا جدًا لمناقشة هذا الموضوع إذا قابلت شخصًا يعمل مع C ++ في مؤتمر JavaScript.
- هل يرتبط هذا الكتاب بطريقة أو بأخرى بـ WebAssembly؟ أنت تفهم ، C ++ و JavaScript ...- تم تخصيص الكتاب بشكل أساسي لـ EOS - هذا هو blockchain جديد إلى حد ما. إنه مشابه لـ Etherium ، ولكن تم إنشاؤه باستخدام LLVM ، وهذا يسمح لك بكتابة عقد لأي شيء يتم تجميعه في LLVM ، بما في ذلك C ++.
- عظيم. دعنا ننتقل إلى القسم التالي ، سيكون أكثر ارتباطًا بتقريرك على HolyJS. اعتدت على العمل مع Angular و Vue و React و JavaScript - والآن أنت تقوم بالإبلاغ عن Flutter ، نظام Google الأساسي للجوّال المكتوب بلغة Dart. ما الذي دفعك للقيام بذلك؟- في هذه الصياغة ، يبدو الأمر مضحكًا حقًا. إليكم قصة مشابهة كيف وصلت إلى Angular ، والتي ذكرتها أعلاه. كنت أرغب في كتابة بعض التطبيقات لنفسي ولأصدقائي الذين يستخدمون من هو Android ، وهو iPhone. لقد نشرنا بالفعل كتابًا عن ReactNative ، ولدي تجربة مع هذه المنصة ، لكنني أردت تجربة شيء آخر. يمكنني الكتابة بلغة Java و Kotlin و Swift ، لذلك بدأت في كتابة طلب اشتراك في Swift. على حد علمي ، تُبذل محاولات للتكيف مع Swift لنظام Android ، ولكن تلك التي أعرفها لا تزال في مراحلها المبكرة جدًا ، لا يمكنك الاعتماد عليها. بالإضافة إلى ذلك ، يبدو لي أن العديد منهم من الاختراق.
أي أن المطور يستخدم لنظام iOS ويحاول ببساطة نقل تجربته إلى Java ، أو على العكس ، فهو على دراية كبيرة بـ Java ويزحف معها في iOS. بالإضافة إلى ذلك ، لم أكن أرغب في التخلي عن مجتمع جافا سكريبت - كان لدي علاقات وثيقة للغاية معه ، يمكنني استخدام أدوات رائعة مثل Redux ، كان هناك العديد من المكتبات ، في حالة عدم وجودها يجب أن أعيد اختراع العجلة. ونتيجة لذلك ، قررت البحث عن إطار عمل جامع آخر ووجدت Flutter.Flutter مكتوب بلغة Dart ، وهي لغة مجمعة ، مثل TypeScript. يوفر التكامل السهل مع مكتبات JavaScript حتى أتمكن من البناء على تجربتي مع Redux. ميزة أخرى لـ Flutter هي أن كل شيء فيه عنصر واجهة مستخدم ، بحيث تصبح عملية كتابة التطبيقات أسرع وأكثر قابلية للفهم. كما أن ثبات البيانات يجعل التطبيقات أكثر أمانًا ، ويتم اكتشاف الأخطاء بسرعة كبيرة. بالإضافة إلى ذلك ، يحتوي Flutter على تجميع AOT وتجميع JIT ، والعديد من الأدوات المدمجة تجعل من السهل جدًا إنشاء تطبيق باستخدام واجهة المستخدم المألوفة. بفضل حقيقة أنه يمكنك رؤية كيفية عمل الأدوات في Flutter ، تبدأ في فهم كيفية عمل Flutter بشكل أفضل.Flutter لديه العديد من نقاط القوة الأخرى - الاختبار وإدارة العبوة والتوزيع والتجميع. واحدة من أروع ميزات Flutter هي إعادة التحميل الساخنة ، التي اعتدنا عليها على الويب. على سبيل المثال ، عندما تقوم بإنشاء تطبيق على Swift ، فإنك تقوم بترجمة ، ثم تشغيل التطبيق ، ثم قد تحتاج إلى الضغط على بعض المفاتيح للعودة إلى الشاشة التي عملت عليها ، لحل المشاكل التي تنشأ ، وبعد ذلك تتكرر الدورة بأكملها. بعد ذلك ، باستخدام Flutter ، ستتم ترجمة واجهة المستخدم دائمًا بنفس اللغة التي كُتب بها منطق عملك. بالنسبة لتجربتي مع Flutter ، كتبت العديد من التطبيقات عليه ، وأنا سعيد للغاية بهذه العملية. يجب أن أقول أيضًا أن Dart مشابه تمامًا لـ TypeScript ، والذي يشبه بدوره JavaScript ،لذا كل تجربة جافا سكريبت الخاصة بي كانت مفيدة بالنسبة لي مع Dart.— Dart — , , JavaScript, . Dart , ? ?- لأكون صريحًا تمامًا ، أعتقد أن Dart رائع. أنا أحب اللغات المكتوبة الثابتة - على الرغم من أنني لا أملك شيئًا ضد اللغات الديناميكية ، إلا أنني أحب Clojure أكثر من غيرها. لكن للكتابة الثابتة العديد من المزايا ، ويبدو لي ، بسببها ، بدأ العديد من المطورين في التحول من JavaScript إلى TypeScript - ومع ذلك ، فإن الأخير لديه القدرة على إزالة الكتابة والسماح للمترجم بتحديد الأنواع بمفرده. يحتوي Dart أيضًا على شيء مشابه ، فهو يقوم باستدلال الكتابة ، لذلك ليس لديه كتابة قوية. ومع ذلك ، فإن ميزة اللغات ذات الكتابة الثابتة ، حتى مع استدلال النوع ، هي أنه يمكن ترجمتها بسرعة إلى لغات أخرى ، ويمكن اكتشاف الأخطاء قبل بدء التطبيق. كما قلت ، لدى TypeScript و Flow كل هذا. يوفر التجميع القدرة على التنبؤ والسرعة ،في Flutter ، يحدث في التعليمات البرمجية الأصلية. بالإضافة إلى ذلك ، كما قلت بالفعل ، يحتوي Flutter على تجميع JIT ، مما يجعل دورة التطوير أسرع وأسهل بكثير ، وبفضل ذلك ، يمكنك إعادة تشغيل سريعة جدًا عند تطوير تطبيق على Flutter.هناك العديد من الأشياء الجذابة الأخرى في Dart - على سبيل المثال ، يعمل النطاق بشكل أسهل بكثير من JavaScript ، لا تحتاج إلى "ربط" الوظائف. الفصول الدراسية هي كائنات من الدرجة الأولى ، ولديها واجهات صريحة ، تسمى منشئات - إذا كنت تعمل في Java ، فأنت على الأرجح تحبها. أعتقد أن هذا رائع للغاية ، فهو يسهل علينا الكتابة على Dart ، ثم تجميعه في JavaScript ثم استخدام JavaScript هذا. بالمناسبة ، لم أذكر ، نعم ، يجمع Dart في JS. تسمح العزلة داخل Dart لاستخدام عمال الويب مع Dart. في رأيي ، دارت تسهل إلى حد كبير أصعب جوانب التنمية. بالإضافة إلى ذلك ، يحتوي Dart على العديد من الأدوات الرائعة ، ومكتبات رائعة لـ Flutter ، ووقت الإطلاق قصير جدًا ، لأن كود Dart يتم تجميعه مباشرة في رمز أصلي ،ليس مثل React Native ، حيث يتم إنشاء طبقة إضافية من JavaScript.- نزع الملكية وما شابه.- نعم.
في رأيي ، أنشأ مجتمع React Native الكثير من المكتبات الجيدة ، ولكن لا تزال هناك العديد من الصعوبات - على سبيل المثال ، لا يمكنك تمرير كائنات JavaString ، يجب أن تكون متسلسلة إلى كائنات سلسلة. مع Flutter ، لا تحتاج إلى القيام بأي شيء مثل هذا ، لأن التجميع يتم مباشرة في التعليمات البرمجية الأصلية. أخيرًا ، نظرًا لأن Dart يشبه Java و C # و ActionScript و JavaScript ، فإن البيئة التي تكتب فيها مألوفة بشكل عام ، ويمكنك الاعتماد على كل تجربتك مع هذه اللغات.- في حين أن كلوجور ، على سبيل المثال ، شيء مختلف تمامًا. ومع Dart ، يكون الأمر مريحًا ، مثل البطانية.- نعم ، كتبت على كلوجور - كل شيء مقلوب هناك.— , -, — — Flutter? , , ? , «Hello World»?- حتى الآن ، أنا معجب جدًا بسرعة التطور وسرعة الواجهات التي أنشأتها على Flutter. إذا اخترت بين التنمية المحلية أو إطار العمل الجامع مثل Flutter أو React Native ، فإن الكثير يعتمد على فريقك. في تطبيق مصمم بشكل صحيح ، أعتقد أنه لا يوجد حد لعدد الشاشات التي يمكن كتابتها - هنا Flutter ليس أقل شأنا من الخيارات الأخرى. إذا كان لديك فريق صغير وتحتاج إلى نقل تطبيقك إلى أكبر عدد ممكن من المستخدمين ، بغض النظر عن النظام الأساسي ، دون التضحية بأداء تطبيقك في وقت التشغيل - استخدم Flutter بالتأكيد. إذا كان لديك الكثير من الموظفين ، وهناك مطورين يتمتعون بخبرة واسعة في كتابة كود أصلي ، فإن السؤال الذي يطرح على الأرجح هو كيف ستقوم بتوظيف فريقك - هل ستقوم بتعيين أشخاصإنهم يكتبون بشكل جيد في Java أو Swift ، أو الأشخاص الذين يمكنهم كتابة رمز للواجهة الأمامية لتطبيق الويب الخاص بك ، وللواجهة الخلفية على الخادم ، ولتطبيق الهاتف المحمول. وهنا ، أكرر ، ميزة Flutter بالنسبة لي هي أنه يسمح لك بالكتابة بلغة أعرفها.إذا أجبت على سؤالك بشكل أكثر مباشرة ، فإن Flutter رائع للتطبيقات التي تعرض بعض المحتوى - على سبيل المثال ، سيكون مناسبًا لـ Twitter. يختلف الموقف عندما تحتاج إلى الأداء الذي لا يمكن إلا للتطبيق الأصلي تقديمه ، على سبيل المثال ، في حالة تطبيقات الواقع المعزز والواقع الافتراضي. تطبيق AR الوحيد لدي مكتوب بلغة Swift ، ولم أقم بترجمته إلى Flutter بعد. ويرجع ذلك جزئيًا إلى أن كل من iOS و Android يحتويان على أطر عمل مريحة للغاية للواقع الافتراضي والواقع المعزز.- ذكرت أن Flutter سيكون مناسبًا لكتابة Twitter - ولكن Twitter مكتوب الآن في PWA. هل يمكنني مقارنة Flutter مع التطبيقات على PWA؟ هم أيضا عبر منصة ، ولديهم العديد من أوجه التشابه الأخرى.- على حد علمي ، سيكون من الممكن في المستقبل تجميع تطبيقات Flutter في تطبيقات الويب ، حتى الآن لا يمكن القيام بذلك. ولكن إذا كتبت منطق الأعمال لتطبيق الويب الخاص بك على Dart ، فيمكنك استخدامه جيدًا في تطبيق الهاتف المحمول. وثبة سريعة جدا. في كثير من الأحيان ، ستكون شفرة Dart JavaScript المترجمة أسرع من التعليمات البرمجية المكتوبة مباشرةً في JavaScript.- أعتقد أن هذا بيان مثير للجدل إلى حد ما.- حسنا ، سأضعها بشكل مختلف. في كثير من الأحيان ، يعد تجميع التعليمات البرمجية على Flutter أسرع من التعليمات البرمجية التي ستكتبها مباشرةً في JavaScript.— . , , . , , JavaScript — JavaScript. — Angular Ionic, — Cordova PhoneGap. , ? , JavaScript?- سؤال مثير للاهتمام. أعتقد أن الحقيقة هي أن جافا سكريبت سهلة التعلم ، لذلك ينمو مجتمعها بسرعة ، مما يسمح لك بتوليد الكثير من الأفكار - بفضل هذا ، React Native ، Node.js ، وفي جزء منه ، نشأت Dart. من بين جميع اللغات الموجودة ، فإن JavaScript ، في رأيي ، هي الأقرب إلى نموذج اللغة العالمي لجميع الأنظمة الأساسية. لكن شخصيا ، أنا منجذب للغات التي تم إنشاؤها على أساس فكرة معينة - على سبيل المثال ، أنا أحب اللغات الوظيفية. لا أعتقد أنها سوف تصبح عفا عليها الزمن. ومع ذلك ، إذا قررت في عام 2018 أن تتعلم كيفية الكتابة بأي لغة ، ولا تعرف ما الذي ستفعله أيضًا - الويب وتطبيقات الجوال والواجهة الخلفية - فلن تندم على ذلك عن طريق اختيار JavaScript."ولكن إذا كانت جافا سكريبت رائعة للغاية ، فلماذا تظهر لغات جديدة الآن - Go ، ClojureScript ، Dart؟" لماذا أحتاج إلى لغات أخرى إذا كان لدي جافا سكريبت؟"وإذا كنت أحب التفاح ، فلماذا تأكل فواكه أخرى؟" سأقول الآن العبارة ، التي غالبًا ما تتكرر في معسكرات التدريب ، وليس فقط هناك - من المهم جدًا أن تتطابق الأداة مع العمل المنجز. أكتب الكثير من التعليمات البرمجية على Go ، لأن كل ما يتعلق بالبلوكتشين التي أقوم بها على Go أو C ++ - السرعة مهمة جدًا هناك. وجميع الواجهات التي أكتبها في JavaScript أو Dart ، وأحيانًا أستخدم ClojureScript. خلاصة القول هي أن C لن تذهب إلى أي مكان في المستقبل القريب ، على الرغم من أنها قديمة جدًا. إنه مناسب للتطبيقات التي تحتاج بشكل خاص إلى السرعة وإدارة جيدة للذاكرة. بطريقة أو بأخرى ، يجب عليك تحمل ميزات اللغة التي تعمل بها. على سبيل المثال ، دائمًا ما تكون مجموعة القمامة مشكلة في JavaScript ، وعند كتابة تطبيقات كبيرة ، سيكون عليك دائمًا التعامل معها.حتمًا ، يجب عليك التضحية بالأداء في وقت التشغيل من أجل بساطة دورة التطوير. تقريري ليس موجهاً بأي شكل من الأشكال ضد Swift أو Java - كما قلت ، تمت كتابة تطبيق AR الخاص بي خصيصًا على Swift ، لأنه من ناحية ، لم أقوم بنقله إلى Flutter بعد ، ولكن من ناحية أخرى ، يعد Swift مثاليًا هذه المهمة.- يبدو أنه في عام 2013 ، عندما أعلنوا عن إنشاء Dart ، كان هناك الكثير من الإثارة حوله ، ولكن بعد ذلك نسي الأمر كثيرًا ، والآن في العديد من المجتمعات يمكنك أن تسمع أن Dart قد مات وليس هناك ما يمكن توقعه منه. ما رأيك في مستقبل Dart و Flutter ، ومستقبل Dart بصرف النظر عن Flutter؟ بعد كل شيء ، هناك AngularDart و Dart للواجهة الخلفية.- سؤال جيد. إذا كنت أعرف الجواب عليه ، فسأجلس في مكان ما على شاطئ دافئ ، أو على يخت خاص بي مع مهبط طائرات عمودية. إذا قمت بعمل أي افتراضات ، يجب عليك أولاً أن تقول أنني لست عضوًا في فريق Flutter - فأنا مجرد متحمس لمشروع ومستخدم للغة Dart. أعتقد أن مكتبة كوبرتينو - واجهة Flutter لنظام iOS - ستنمو. ويبدو أن فريق Flutter يريد إضافة القدرة على كتابة تطبيقات سطح المكتب الأصلية على Flutter - لكنني بالتأكيد لست متأكدًا من ذلك.أما بالنسبة إلى إنشاء Dart ، في رأيي ، فقد تم الإعلان عنه مبكرًا جدًا ، مما أدى إلى حماس لا داعي له وآمال سابقة لأوانها. في عام 2013 ، كان عام EcmaScript ، وأعتقد أنه كان من نصيب Google محاولة التأثير على فريق ECMAScript. بالإضافة إلى ذلك ، أصبح Flow و TypeScript أكثر شيوعًا من حيث الكتابة بلغة ما. أتمنى كل من دارت وفلوتر كل التوفيق ، خاصة مع الإصدار القادم من الإصدار 1.0 من Flutter.هناك مشروع يعمل مثل Flutter ، يسمى Fuse ، ولكنه يعتمد على C #. أما بالنسبة لمستقبله ، فأنا حقاً لدي شكوك. في الوقت نفسه ، ينمو مجتمع جافا سكريبت بسرعة كبيرة ، وبما أن دارت قريبة من جافا سكريبت ، فإن هذا سيشجع المطورين على الاهتمام بـ Dart و Flutter.- عظيم شكرا. أود أيضا أن أتحدث عن المؤتمرات. ما هو الأهم بالنسبة لك؟- كما ذكرت ، الأكثر قيمة بالنسبة لي في المؤتمرات هو دردشة المدخل. وهنا يعتمد الكثير على المشاركين في المؤتمر أنفسهم. يساعد المحتوى المثير للاهتمام والمتحدثون والأحداث التي لا تنسى والمتعلقة بالمؤتمر على إنشاء وتعزيز مجتمع من الأشخاص ذوي التفكير المماثل. كل ما يساعد هذا المجتمع على الازدهار مهم. وكما قلت ، أحب الذهاب إلى المؤتمرات لأنها تجعل عملي اجتماعيًا وليس فرديًا.- حسب علمي ، ستكون هذه رحلتك الأولى إلى روسيا؟- نعم.
- ما هي توقعاتك من روسيا وموسكو ومن HolyJS؟- بما أنه باستثناء موسكو ، لن أرى أي شيء في روسيا ، فإن الجزأين الأولين من السؤال سيكونان متشابهين في الأساس. كما سبق ذكره ، لم أذهب أبدًا إلى روسيا - لقد سافرت بشكل رئيسي إلى الصين وبلدان تلك المنطقة ، أي إلى تايوان وكوريا الجنوبية. كما أفهم مما قرأت عن روسيا ، لديك ثقافة مختلفة ، أنت تفعل كل شيء بشكل مختلف قليلاً عما نفعله ، وسيكون من المثير للاهتمام للغاية بالنسبة لي معرفة كيف تبدو في الممارسة. هذا أحد الأسباب التي تجعلني أحب السفر - أشعر دائمًا بالفضول لمعرفة كيفية عيش الآخرين ، وما هي أولوياتهم. نيويورك لها ثقافتها الخاصة ، وكل معرفتي بالثقافة الروسية تأتي للحصول على تأشيرة وزيارة مطعم محلي. لذلك تنتظرني تجربة جديدة ومثيرة ، بالضبط كيف ستكون - لا يمكنني التكهن.بالنسبة لـ HolyJS ، على حد علمي ، المطورين في روسيا هادفون وذكيون ودقيقون للغاية. لا أريد الإساءة لأي شخص في فرنسا أو في إنجلترا ، ولكن يمكن العثور على الصرامة في التواصل هناك ، لذلك أتطلع إلى محادثات تقنية جادة مع التقنيين الجادين. في رأيي ، إن المطورين في روسيا رائعون للغاية ، وأود حقًا التحدث معك شخصيًا ومع مجتمعك.حسنًا ، وبطبيعة الحال ، أتوقع نزلة برد في موسكو.- لماذا أنت ، يا لها من برد -10 أو -15 درجة مئوية ، مجرد تفاهات.- فقط شيء؟ ثم سأكون في السراويل القصيرة.- وفي النظارات الشمسية. على محمل الجد ، لدينا مجتمعات Dart و Flutter رائعة - على الرغم من أنها بالطبع بعيدة عن مجتمع JavaScript. وفي كلتا الحالتين ، ستأتي الأحداث البارزة قريبًا: HolyJSسيعقد في 24-25 نوفمبر ، وفي 1 ديسمبر سيكون هناك مؤتمر حول Dart و Flutter.- عظيم. Flutter سيكون خارج بيتا الآن.على الرغم من أنه في حالة Flutter ، فإن الرمز مكتوب على Dart ، فإن تقرير Ari عن HolyJS سيتم تصميمه للأشخاص ذوي الخبرة في JavaScript: مقدمة أولية عن Dart غير مطلوبة. وتعني مجالات المناقشة في المؤتمر أنه بعد التقرير ستكون هناك فرصة لمناقشة كل ما هو مهم مع آري: على الأقل اطرح سؤالًا على Angular ، على الأقل أعطه كتابًا للتوقيع. بشكل عام ، أراك في 24-25 نوفمبر في هولي !