Серия Front-end Hunting: исследуйте Python, чтобы запретить JavaScript — часть 1

Python внешний интерфейс JavaScript Язык программирования

напиши первым

Жизнь коротка, я использую JavaScript.Однако в других кругах есть популярная поговорка:Жизнь коротка, я использую Python.Конечно, есть и идеальное программирование волос, о котором не упоминается. Когда вы изучите определенный уровень в начале, у вас возникнет желание выйти и посмотреть, перейти через гору, выйти за пределы горы и увидеть пейзаж снаружи. Хотя пейзаж снаружи такой же, я не могу не взглянуть (%E8%B4%B1%E5%91%97%0A).

скажи больше

как беспокойныйFEE, Я сказал, что даже если я выучу и забуду, я все равно научусь. Учиться и забывать, и никогда не учиться — совершенно разные понятия. Я помню такую ​​идиому, которая называласьпонять по аналогии.

Обычно мы понимаем это так, приведу пример, как я изучаюJavaScript, я учусь поJavaScriptПриходите и медленно осваивайте другие похожие языки. Но я думаю, что мы можем понять это и с другого ракурса, такого как я.JavaScriptЯ хорошо учусь, я хочу учитьсяPython,через обучениеPythonчтобы компенсировать мойJavaScript,пройти черезPythonобучение, заставило меняJavaScriptмышление стало глубже. Например,importждать ключевых слов вPythonРано утром. На самом деле я хочу сказать, что когда вы изучаете более широкий спектр материалов, чем больше знаний вы получаете, и чем выше вы смотрите на вещи, вы обнаружите, что многие проблемы могут быть использованы для решения различных задач.постоянно меняющийсярешать. Хм.... это не сказать больше, это явно абзац. . . .

Что ж, приступим к изучению! !

из семьи

Мне нравится сравнивать то, что я узнал, с тем, что я узнал на переднем крае. В целом более систематическое обучение (просмотр видео МООК и чтение хороших книг)Pythonназад. На самом деле, есть еще много, чтобы выиграть.

фактическиPYа такжеJSСходств много, одно из самых важных:JSа такжеPYВсе интерпретируемые языки. Интерпретируемые языки широко известны как языки сценариев.Если вы посмотрите на историю языков программирования, вы найдетеPerlРождение языка является признаком зрелости языка сценариев. Если вам интересно, вы можете ознакомиться с информацией самостоятельно. Если вы хотите узнать больше о принципах языков программирования, вы можете прочитать 10-е издание «Принципов». языков программирования» Себастьяна. Очень хорошо написано! Не спрашивайте меня, почему, потому что я видел это раньше, хи-хи.

По сути, интерпретируемые языки иJavaСущественным отличием этого скомпилированного языка является следующий абзац:

Интерпретируемые языки не требуют от разработчиков компиляции и переводятся на машинный язык при запуске программы. а такжеJavaЭтот язык нужно разработчикам вручную компилировать, и выяснять, что хорошо, по сути, сравнивать невозможно, если уж производительность конечноJavaЛучшая производительность, потому что после компиляции вы можете запускать несколько прогонов за файлами байт-кода напрямую, не нужно перестраивать. а такжеJavaScript,PythonЭтот язык, несмотря на низкую производительность, требует компиляции каждый раз при запуске, но эффективность разработки высока, а переносимость также очень хороша.Дайте ему rumtime, он пошлет вам счастливую жизнь.Более того, я скриптовый язык, что я делаю? Разве вы не слышали очень известное изречение NB в области компьютерных наук:

Любую проблему в информатике можно решить, добавив непрямой промежуточный слой.

Согласно этой теории, можно найти решение проблемы медленной работы интерпретируемых языков, т.JIT compilation, перевод представляет собой компиляцию точно в срок. Промежуточный уровень используется для сохранения переведенного машинного кода. Когда он вызывается снова в следующий раз, скомпилированный машинный код, который был скомпилирован ранее, выполняется непосредственно из кэша.

JS впитал в себя достоинства PY

Являясь лидером в индустрии сценариев,PYвсегда играл благородную роль,PYФилософия дизайна — элегантность, ясность и простота. И, оглядываясь назад, на его изобретение ушло 10 дней.JS,Я нашелJSЭто как самоподъемное диаси (люди бедны и амбициозны). Через метод обтягивания города из сельской местности один шаг за раз, и, наконец, небо самостоятельно.

Почему ты хочешь это сказать, потому что я лично понимаю,JSКогда он был создан, он не давал больших ожиданий, что также привело ко многим вещам, которые не были учтены при их создании, например,JSОн основан на объектно-ориентированном дизайне, но не имеет характеристик, которые должны быть у объектно-ориентированных языков, таких как классы и наследование. а такжеPYС самого начала это был объектно-ориентированный язык. У меня есть каштан,JSсерединаthis, направлений много, это сложный пункт знаний для студентов, которые только начинают работать с фронтендом. смотреть на всеOOP(объектно-ориентированное программирование) языки,thisДело очень ясное, указать на создание объекта класса. пока вJS, именно из-за неоднозначного позиционирования в начале конструкции и говорится, чтоOOP, отсутствие таких функций, как классы реализации, но он разработан на основе объектно-ориентированного.

Поскольку на уровне разработки языка не заданы соответствующие ключевые слова, такие какclassКлючевые слова, если нет класса, то что еще есть в JS, это все функции.OOPнеочевидно, остальное можно толькоOPP(Ориентировано на процедуру) Да 😂. Итак,thisТочка станет разнообразным обстоятельствами, обстоятельства не говорили, доступ к информации самостоятельно. Но потом, пришло время придумать поговорку:

Любую проблему в информатике можно решить, добавив непрямой промежуточный слой.

ты сказал нетclassКлючевое слово? Не удается реализовать наследование? Не можете реализовать полиморфизм? Его не существует, даже если я умру с голоду, я это осознаю. Ну.... действительно ароматный~~ Тогда есть использование цепочки прототипов для реализации наследования в начале, и в то же время, чтобы уменьшить потребление памяти, его можно оптимизировать для комбинированного наследования. По сути, все это для того, чтобы залатать дыру, которая не была запланирована в изначальном проекте.Бывший коллега выкопал дыру, а я ее засыпал. позже, подождиES6Когда он вышел, его наконец-то можно было использоватьclassнаписатьOOP. но этоclassЭто просто синтаксический сахар. Положите прямо, яма, оставленная коллегами, ушла глубоко в сердце! Весь мир использует это, что я могу сделать? Ложь в моем сердце не может быть прямо и принципиально модифицирована. Это может быть достигнуто только путем полагаясь на знаменитую высказывание выше. Я создадим косвенный средний слой для достижения его.classФункция, я не буду перемещать другие нижние слои, и они обратно совместимы.Ведь пользователи во всем мире. Итак, со временем вы строите средний слой, я строю средний слой, а затемJSОн становится все более изящным, четким и лаконичным. Дни становятся лучше.

Благодаря усилиям FEE по всему миру JS стремится двигаться вперед в направлении элегантности, ясности и простоты.

Как JS поглотил PY

Дафа, поглощающий звезду, также оценивается, если вы не будете сосать его хорошо, он может взорваться.

Первое о точках с запятой:

записыватьPYКод без точек с запятой является стандартом, а символ новой строки используется в качестве кода конца строки. В настоящее времяJSОсновные фреймворки рекомендуют не добавлять точку с запятой. Цель проста: просто и эффективно.JSбудущие стандарты.

Второй касается ключевых слов.

PYа такжеJSоба используютimportИмпортировать ключевые слова как модули

Третье о функциях

Есть замыкания и анонимные функции, которые можно использоватьlamadaвыражение.

Позвольте мне рассказать об этом здесь, на самом деле есть еще несколько языков, которые я изучаю.PYЦель состоит в том, чтобы отрицатьJS, позвольте мне взглянуть на мою маленькую милашку с другого ракурсаJS.其实在前端,很多人搞不清楚闭包。知其然,不能知其所以然。 Почему это происходит?

Я лично думаю, что самая важная причина - из-за закрытияJSЯзык играет очень важную роль.Открытие заключается в том, что существует слишком много мест и сценариев, где используются замыкания.Многие сценарии должны быть выполнены с использованием замыканий, и тогда функции замыканий во многих сценариях различаются. Многие младенцы, которые только что вошли в ваш круг, имеют очень поверхностное понимание. Например, предотвращение загрязнения глобальных переменных, модульность и т. д. Невозможно глубоко понять, что замыкание находится вJSважную роль в. Если вы хотите полностью освоить замыкания, вы должны освоить или понять принципы компилируемых языков.

закрытие вJSНасколько это важно, по моему личному мнению: Замыкания существуют во многих языках, ноJSЗависит от замыканий больше, чем любой другой язык. Почему ты это сказал? Давайте увеличим шаблон: с точки зрения принципов языка программирования замыкания на самом деле:

Подпрограмма и определяющая ее эталонная среда. То есть, если подпрограмму можно вызвать из любой точки программы, она должна ссылаться на среду.

Сделайте перерыв и посмотрите сначала на замыкания, вы обнаружите, что есть очень незнакомое слово, называемое эталонной средой. На самом деле эталонная среда здесь также называется областью действия. Это просто другое имя, поэтому вопрос в том, что такое эталонная среда (область)?

Эталонная среда (область действия) — это набор всех переменных, видимых в этом операторе.

Как понять это предложение, на самом деле это предложение очень важно для вас, чтобы понять объем, часто упоминаемый в интерфейсе, пожалуйста, посмотрите очень простой код:

const g = 'haha'
const a = 'i am godkun'
function fun() {
  let b = 'hello world'
  console.log(b + a)
}
fun()

ОК, посмотрите на приведенный выше код,fun()Какова сфера действия заявления? В соответствии с характеристиками языков со статической областью видимости вы должныfunПосмотрите на место выполнения кода функции, черезfunфункция может знать,funОбъем функции (эталонная среда)funПеременные, объявленные в локальной области видимости тела функцииbи переменные в глобальной области видимостиaКоллекция , здесь подчеркивается, что даже если глобальные переменныеgне былfunиспользование функции. Это также считаетсяfunв эталонной среде функции.

Подвести итог:В языке со статической областью видимости эталонная среда оператора представляет собой набор переменных, объявленных в его локальной области видимости, и всех видимых переменных, объявленных в области его предка.

Что ж, давайте перейдем к замыканиям, то есть замыкания бесполезны, если язык программирования со статической областью видимости не допускает вложенных подпрограмм. Замыкания поддерживаются, если разрешены вложенные подпрограммы.В этом языке, допускающем вложенные подпрограммы, доступны все переменные (как локальные, так и глобальные) в эталонной среде подпрограммы, независимо от того, где в программе вызывается подпрограмма.Это предложение нелегко понять, мы можем использоватьJSЧтобы проиллюстрировать на примере:

JSявляется языком со статической областью видимости, но допускает вложенные подпрограммы, еслиJSВложенность подпрограмм не допускается, эта песня классная и классная для маленькой милашкиJSкакие. Что такое язык статической области видимости, официальный ответ не скажет, С точки зрения непрофессионала, это вашеJSКогда программа объявлена, область действия определена. Те, кто изучил принципы языков программирования, должны знатьСтатическая область видимости также называется лексической областью видимости, а переменные, использующие лексическую область видимости, называются лексическими переменными.

function say() {
  let str = 'hello world'
  console.log(str)
} 

Как видно из вышеизложенного, переменнаяstrявляется лексической переменной. Тогда основная сущность выйдет наружу.

Лексические переменные имеют определенную область действия и неопределенное время жизни.

Область действия лексической переменной может быть функцией илиblock, что делает его действительным в этой области кода. посколькуJSОбласть блока поддерживается (letОбъявление нельзя считать блочным скоупом в прямом смысле, не будем об этом), этоblockЭто стало реальностью.Но почему время жизни лексической переменной неизвестно, потому что время жизни лексической переменной зависит от того, как долго на переменную нужно ссылаться. И как долго это цитируется, мы можем искусственно контролировать. И человеческий контроль всегда будет ненадежным. Поэтому и родился артефакт GC.

Вы обнаружите, что из статической области выше должна быть динамическая область. Что такое динамическая область, не говоря уже о! , ведь иJSЭто не имеет значения. Я просто говорю, что отрицаю это! Кстати говоря, если я напишу заключительную статью, забудьте об этом, я расскажу об этом позже.

Открытие не может закончиться

Я думал о том, чтобы сделать это, но обнаружил, что не могу удержать его, когда писал его.Я думал, что все равно буду участвовать сегодня в 9 часов (уже 1542994654097, когда я это писал)VueConf, а завтра примет участие в конференции разработчиков Google в Шанхае. Тогда интересно то, что сегодня я хочу встать в 5 часов, чтобы покататься на высокоскоростной железной дороге, хм, молча добавлено в конце заголовка статьи.——Часть 1, я лучше уберу руки и пойду спать.

на самом деле я учусьPYЦель состоит в том, чтобы отрицатьJS,пройти черезPYясно видетьJS. На самом деле изучение серверного языка имеет очень важное подспорье для фронтенда, то есть вы сможете глубоко понятьWebМного знаний о сетях в программировании, TCP/IP, Socket, HTTP и т.д.webС точки зрения безопасности, как сервер это делает. Подождите, давайте поговорим об этом в следующей статье, и, конечно же, я учусьPYПосле небольшого реального боя его можно считать полезным для обучения. Это не очень полезно, но весело.

Некоторые возможно скажут,Node.jsРазве это не серверный язык, почему бы вам его не выучить?Node.js, я хочу сказать это,Node.jsя тоже учусь. НапримерNode.jsИсходный код использует много замыканий, асинхронныхIOОперации используют замыкания. ноNode.jsтакже использоватьJSНаписано 😂, я охотник сериал, так чтоNode.jsне учитываются.

PYс декораторами,JSнет, но отличный транспиляторBabelЭта проблема может быть решена, я думаю, что я могу принять решение,BabelЭтот артефакт может даже унифицировать языки сценариев в будущем. согласно сBabelУказанная спецификация грамматики записывается, а затемBabelАнализируя существующий код, он разбирается наAST, а затем трансформировать, генерируя новыеAST, а затем позвольте интерпретатору интерпретировать новую структуру кода.

Тогда вы понимаете, согласно команде скомпилировать язык сценариев, который вы хотите.PYа такжеJSВ совокупности это в конечном итоге становится:

Жизнь коротка, и я люблю PS. умер

братан, если ты тоже любишьPS, просто нравится, хи хи. Добро пожаловать, обратите внимание, последующие серии будут более захватывающими 😊!