(Когда) я должен изучить компиляторы?

Добро пожаловать в document.querySelectorAll()! Соберите все элементы, которые соответствуют запросу, затем используйте цикл forEach, чтобы применить любую функциональность, которую вы хотите.

Ресурс: https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll

Для вашего случая использования я бы сделал что-то подобное :

const carousels = document.querySelectorAll('.wrapper-carousel-thingy');

if (carousels) {
  carousels.forEach((carousel) => {
    const trigger = carousel.querySelector('.some-inner-trigger-element');
    trigger.addEventListener('mouseenter', () => {
      carousel.classList.add('active');
    });
    trigger.addEventListener('mouseleave', () => {
      carousel.classList.remove('active');
    });
  });
}
.wrapper-carousel-thingy {
  border: 2px solid black;
  padding: 20px;
}
.wrapper-carousel-thingy.active {
  border-color: red; /* border color change just an example of how you can update the parent element based on hover of interior element */
}
.some-inner-trigger-element:hover {
  background: yellow; /* just to emphasize which element is the trigger */
}

35
задан Community 23 May 2017 в 11:54
поделиться

7 ответов

Если вы просто хотите быть заурядным программистом и писать что-то ... вы не понимаете Вам не нужно брать компиляторы.

Если вы хотите изучать информатику, ценить и действительно стать ученым, вы ДОЛЖНЫ брать компиляторы.

Компиляторы - это микрокосм информатики! Он содержит все проблемы, включая (но не ограничиваясь ими) AI (жадные алгоритмы и эвристический поиск), алгоритмы, теорию (формальные языки, автоматы), системы, архитектуру и т. Д.

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

Как программисты, нам очень часто нравится говорить о вещах, которые являются «черным ящиком» ... но все становится намного проще, когда вы немного понимаете, что находится в коробке. Даже если вы не создадите целый компилятор, вы наверняка многому научитесь. Вы увидите формализмы, лежащие в основе синтаксического анализа (и поймете, что это не просто куча особых случаев, собранных вместе), и куча NP-полных проблем. Вы поймете, почему теория информатики так важна для практических целей. (В конце концов, компиляторы чрезвычайно практичны ... и у нас не было бы современных компиляторов без формализма.)

Я действительно надеюсь, что вы подумаете о том, чтобы узнать о них ... это поможет вам перейти на следующий уровень, так как ученый-компьютерщик: -).

но все становится намного проще, когда вы немного понимаете, что находится в коробке. Даже если вы не создадите целый компилятор, вы наверняка многому научитесь. Вы увидите формализмы, лежащие в основе синтаксического анализа (и поймете, что это не просто куча особых случаев, собранных вместе), и куча NP-полных проблем. Вы поймете, почему теория информатики так важна для практических целей. (В конце концов, компиляторы чрезвычайно практичны ... и у нас не было бы современных компиляторов без формализма.)

Я действительно надеюсь, что вы подумаете о том, чтобы узнать о них ... это поможет вам перейти на следующий уровень, так как ученый-компьютерщик: -).

но все становится намного проще, когда вы немного понимаете, что находится в коробке. Даже если вы не создадите целый компилятор, вы наверняка многому научитесь. Вы увидите формализмы, лежащие в основе синтаксического анализа (и поймете, что это не просто куча особых случаев, собранных вместе), и куча NP-полных проблем. Вы поймете, почему теория информатики так важна для практических целей. (В конце концов, компиляторы чрезвычайно практичны ... и у нас не было бы современных компиляторов без формализма.)

Я действительно надеюсь, что вы подумаете о том, чтобы узнать о них ... это поможет вам перейти на следующий уровень, так как ученый-компьютерщик: -).

Вы увидите формализмы, лежащие в основе синтаксического анализа (и поймете, что это не просто куча особых случаев, собранных вместе), и куча NP-полных проблем. Вы поймете, почему теория информатики так важна для практических целей. (В конце концов, компиляторы чрезвычайно практичны ... и у нас не было бы современных компиляторов без формализма.)

Я действительно надеюсь, что вы подумаете о том, чтобы узнать о них ... это поможет вам перейти на следующий уровень, так как ученый-компьютерщик: -).

Вы увидите формализмы, лежащие в основе синтаксического анализа (и поймете, что это не просто куча особых случаев, собранных вместе), и куча NP-полных проблем. Вы поймете, почему теория информатики так важна для практических целей. (В конце концов, компиляторы чрезвычайно практичны ... и у нас не было бы современных компиляторов без формализма.)

Я действительно надеюсь, что вы подумаете о том, чтобы узнать о них ... это поможет вам перейти на следующий уровень, так как ученый-компьютерщик: -).

40
ответ дан Tom 27 November 2019 в 07:01
поделиться

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

9
ответ дан JesperE 27 November 2019 в 07:01
поделиться

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

Если вы когда-либо переводили с одного языка на другой, вы только что завершили компиляцию.


Итак, когда вы должны узнать о компиляторах?

Когда вы хотите или нуждаетесь в решении проблемы.

4
ответ дан Unknown 27 November 2019 в 07:01
поделиться

Если вы собираетесь работать на достаточно высоком уровне, когда вы беспокоитесь о UML и о себе описывая код, вы легко могли бы пройти всю свою карьеру, не желая и не нуждаясь в интимных деталях работы компилятора.

Но, если вы программист в закапывании и не имеете стремления управлять своими друзьями, вполне вероятно, что однажды вы поймете, что ведете войну со своим компилятором. Это может быть случайная ошибка или разговор в коридоре о циклах «в то время как стихи». Вы поймете, что сборка (или IL, вероятно, в ближайшие годы) находится чуть-чуть левее от того, что вам было нужно, и развернется другая вселенная.

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

4
ответ дан overslacked 27 November 2019 в 07:01
поделиться

Теория компилятора полезна, но не обязательна.

Хотя есть некоторые методы, которые пригодятся, например, лексические анализ и синтаксический анализ.

Другой - обработка ошибок. Компиляторам нужно много таких. Пользовательский ввод может содержать что угодно, даже неожиданное. И вам нужно разобраться со всем этим.

3
ответ дан Toon Krijthe 27 November 2019 в 07:01
поделиться

Если вы собираетесь писать крайне критичный ко времени код реального времени, вы извлечете пользу из понимания того, как компилятор оптимизирует ваш код. Однако на самом деле вы получите больше пользы от понимания базовой архитектуры вашего оборудования.

Из моего опыта, если вы поймете, как работает оборудование, и как компилятор интерпретирует ваш код, вы сможете писать код, который выполняет именно то, что Вы намерены это сделать. Несколько раз меня ловили, когда я писал код, который оптимизировал компилятор и заставлял аппарат делать то, что я не собирался.

В общем,

3
ответ дан sybreon 27 November 2019 в 07:01
поделиться

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

2
ответ дан sharptooth 27 November 2019 в 07:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: