Re[6]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 10.06.19 10:12
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Во-вторых, только в javascript при получении отсутствующего элемента из массива возврщается null (undefined). На мой взгляд, это один из самых серьезных косяков js.


Это не баг, а фича.
  Свежайший образец кода
var countPrimes = function(n) {    
    // https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
    
    if (n < 2) {
        return 0;
    }
    
    let A = new Array(n);  // A[0] will not be used
    let limit = Math.floor(Math.sqrt(n - 1));
    let primeCount = n - 2;    
    let i = 2;
    
    while (i <= limit) {
        for (let j = 2 * i; j < n; j += i) {
            if (!A[j]) {
                primeCount--;
                A[j] = 1;   
            }
        }        
        
        let ready = true;
        
        for (let k = i + 1; k <= limit; k++) {
            if (!A[k]) {
                i = k;
                ready = false;
                break;
            }
        }
        
        if (ready) {
            return primeCount;
        }
    }   
    
    return primeCount;
};

Как нетрудно заметить, массив A изначально имеет ненулевой размер, но не содержит конкретных элементов (то есть все они undefined).
Re: Python и JavaScript
От: c-smile Канада http://terrainformatica.com
Дата: 10.06.19 21:08
Оценка: 3 (1)
Здравствуйте, Lazytech, Вы писали:

L>Интересно, это только мне одному кажется, что знание основ Python позволяет значительно быстрее освоить такой непохожий на него язык, как JavaScript, и писать на нем более эффективный код?


Я когда-то писал нативный JavaScript compiler для Python VM.

Там разница только в syntax — базовые конструкции runtime — одни и те же, поэтому это две стороны одной и той же сущности.

Кстати может быть неплохой public project — сделать JS compiler для Python VM. Ну типа как Kotlin для Java. Т.е. использование Python библиотек из JS напрямую.
Re[2]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 11.06.19 02:14
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Там разница только в syntax — базовые конструкции runtime — одни и те же, поэтому это две стороны одной и той же сущности.


Вчера обнаружил, что не первый день пользуюсь неполным (малость устаревшим?) справочником по JavaScript:
https://www.w3schools.com/jsref/

Оказывается, в JavaScript все-таки есть близкий аналог питоновского dictMap().
Re: Python и JavaScript
От: Basil2 Россия https://starostin.msk.ru
Дата: 15.06.19 19:45
Оценка: 4 (2)
Здравствуйте, Lazytech, Вы писали:

L>Интересно, это только мне одному кажется, что знание основ Python позволяет значительно быстрее освоить такой непохожий на него язык, как JavaScript, и писать на нем более эффективный код?


Они оба скриптовые с динамической типизацией, сборкой мусора и функциями-объектами, так что достаточно таки похожи (если, конечно, вы не про синтаксис). После С++, например, различия между ними кажутся совсем непринципиальными


P.S. Если уж пошли в JS, скорее переходите на TypeScript.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re[2]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 16.06.19 00:35
Оценка:
Здравствуйте, Basil2, Вы писали:

B>Они оба скриптовые с динамической типизацией, сборкой мусора и функциями-объектами, так что достаточно таки похожи (если, конечно, вы не про синтаксис). После С++, например, различия между ними кажутся совсем непринципиальными


Будучи начинающим программистом, сравниваю разные ЯП именно по синтаксису.

B>P.S. Если уж пошли в JS, скорее переходите на TypeScript.


А есть ли в этом насущная необходимость? Насколько я понимаю, TypeScript имеет смысл осваивать разработчикам, которые намереваются использовать навороченный веб-фреймворк вроде Angular, который новичку вроде меня, наверное, не по зубам.
Re[3]: Python и JavaScript
От: Basil2 Россия https://starostin.msk.ru
Дата: 16.06.19 03:54
Оценка: 1 (1)
Здравствуйте, Lazytech, Вы писали:

B>>P.S. Если уж пошли в JS, скорее переходите на TypeScript.


L>А есть ли в этом насущная необходимость? Насколько я понимаю, TypeScript имеет смысл осваивать разработчикам, которые намереваются использовать навороченный веб-фреймворк вроде Angular, который новичку вроде меня, наверное, не по зубам.


Фреймворки тут непричем. TypeScript это надстройка над JavaScript, которая расширяет его и одновременно делает более строгим. Плюс TypeScript статически проверяет ваш JavaScript код на ошибки, что позволяет находить ошибки еще на стадии конвертации. Просто загуглите, там на базовом сайта все доходчиво рассказано.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re[3]: Python и JavaScript
От: Буравчик Россия  
Дата: 16.06.19 04:50
Оценка: 3 (1)
Здравствуйте, Lazytech, Вы писали:

L>А есть ли в этом насущная необходимость? Насколько я понимаю, TypeScript имеет смысл осваивать разработчикам, которые намереваются использовать навороченный веб-фреймворк вроде Angular, который новичку вроде меня, наверное, не по зубам.


Используйте javascript (ES6, ES2015). TypeScript только развивается, его стоит изучать после javascript.

Если хочется изучить статически типизированный язык, то лучше взять java. Порешать на ней алгоритмические задачки (т.е. не залезать в фреймворки и т.п.).
Потом будет легко перейти на C#, или познакомиться с C.

В качестве js фреймворка для SPA рекомендую Vue. Очень простой, понятный и в то же время функциональный фреймворк.

P.S. Вообще, надо определиться какая область программирования и какой язык нравится. Дальше разбираться в библиотеках и фреймворках в этой области на этом языке.
Best regards, Буравчик
Отредактировано 16.06.2019 4:52 Буравчик . Предыдущая версия . Еще …
Отредактировано 16.06.2019 4:52 Буравчик . Предыдущая версия .
Отредактировано 16.06.2019 4:51 Буравчик . Предыдущая версия .
Re[4]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 16.06.19 05:37
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>В качестве js фреймворка для SPA рекомендую Vue. Очень простой, понятный и в то же время функциональный фреймворк.


Уже изучаю по рекомендации, полученной в другой теме.

Б>P.S. Вообще, надо определиться какая область программирования и какой язык нравится. Дальше разбираться в библиотеках и фреймворках в этой области на этом языке.


Пока это слишком сложный вопрос для меня.
Re[2]: Python и JavaScript
От: novitk США  
Дата: 16.06.19 07:40
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Кстати может быть неплохой public project — сделать JS compiler для Python VM. Ну типа как Kotlin для Java. Т.е. использование Python библиотек из JS напрямую.


https://brython.info/, но смысла в этом мало.
Re: Python и JavaScript
От: novitk США  
Дата: 16.06.19 07:48
Оценка: 1 (1) +3
Здравствуйте, Lazytech, Вы писали:

L>Интересно, это только мне одному кажется, что знание основ Python позволяет значительно быстрее освоить такой непохожий на него язык, как JavaScript, и писать на нем более эффективный код?


IMHO, не особо. Рантайм конечно похож, но гимор с JS будет совершенно другого уровня. Проблема уже не столько сам язык, его как раз подтянули последнее время, а неоправдано сложная экосистема из говна и палок. Если жизнь не заставляет, я бы советовал его избегать и покопать в сторону чего-нибудь простого статического (Ява).
Re[2]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 16.06.19 16:49
Оценка:
Здравствуйте, novitk, Вы писали:

N>IMHO, не особо. Рантайм конечно похож, но гимор с JS будет совершенно другого уровня. Проблема уже не столько сам язык, его как раз подтянули последнее время, а неоправдано сложная экосистема из говна и палок. Если жизнь не заставляет, я бы советовал его избегать и покопать в сторону чего-нибудь простого статического (Ява).


Я по наивности думал, что Java — для избранных, тогда как JavaScript — относительно простой ЯП, на котором пишут все, кому не лень.
Re[3]: Python и JavaScript
От: Буравчик Россия  
Дата: 16.06.19 21:41
Оценка: 3 (1)
Здравствуйте, Lazytech, Вы писали:

L>Я по наивности думал, что Java — для избранных, тогда как JavaScript — относительно простой ЯП, на котором пишут все, кому не лень.


Все так и есть. Т.к. js простой язык и на нем пишут все, кому не лень, то и библиотеки пишут все кому не лень. Поэтому их очень много, но многие из них невыского качества. С java по-другому. Там библиотек меньше, но они более проработанные, более гибкие, более функциональные. И поэтому более сложные.

И есть еще один момент. Js — это скриптовый язык, в первую очередь для web, для фронтенда. Его scope — уровень одной страницы, т.е. маленькие скрипты.
Даже если пишется большое приложение (SPA), то архитектурные вещи зашиты в фреймворк. Из-за этого сложность сильно понижается.

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

Особняком здесь стоит python. Он используется как в скриптах, так и в больших системах, часто используется на бэкенде. Ему не чужды архитектурные паттерны (в отличие от js). Динамика добавляет как плюсы, так и минусы. Его легко изучать, много качественных библиотек.

Итого:
java/c# — серьезные (и занудные) языки для больших задач, в том числе для очень-очень больших
js — для фронтенда
python — более универсальный, не занудный, при это все еще можно решать серьезные задачи
Best regards, Буравчик
Re[3]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 28.06.19 04:33
Оценка:
Я целый месяц пребывал в убеждении, что пустой массив и пустая строка в JavaScript равносильны false (по аналогии с пустым списком и пустой строкой в Python). Оказывается, пустая строка — действительно false, а вот пустой массив — true.
Re[4]: Python и JavaScript
От: Ватакуси Россия  
Дата: 28.06.19 07:42
Оценка:
Здравствуйте, Lazytech, Вы писали:

L>Я целый месяц пребывал в убеждении, что пустой массив и пустая строка в JavaScript равносильны false (по аналогии с пустым списком и пустой строкой в Python). Оказывается, пустая строка — действительно false, а вот пустой массив — true.


Мотря как сравнивать

console.log([] === false); //prints false
console.log([] == false); //prints true
console.log(0 == false); //prints true
console.log(1 == "1") // prints true
console.log(1 === "1") //prints false
Все будет Украина!
Re[5]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 28.06.19 07:52
Оценка:
Здравствуйте, Ватакуси, Вы писали:

В>Мотря как сравнивать


Я имел в виду другое.

Python:
arr = []
if arr:
    print('true')
else:
    print('false')


JavaScript:
let arr = [];
if (arr) {
  console.log('true');
} else {
  console.log('false');
}
Re[6]: Python и JavaScript
От: Ватакуси Россия  
Дата: 30.06.19 13:54
Оценка:
Здравствуйте, Lazytech, Вы писали:

L>Здравствуйте, Ватакуси, Вы писали:


В>>Мотря как сравнивать


L>Я имел в виду другое.


L>Python:

L>
arr = []
L>if arr:
L>    print('true')
L>else:
L>    print('false')
L>


L>JavaScript:

L>
let arr = [];
L>if (arr) {
L>  console.log('true');
L>} else {
L>  console.log('false');
L>}
L>


let a = [];
if (a)
console.log("true");
else
console.log("false");

печатает true, Chrome 75.0.3770.100 64 bit
Все будет Украина!
Re[7]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 30.06.19 14:50
Оценка:
Здравствуйте, Ватакуси, Вы писали:

В> let a = [];

В> if (a)
В> console.log("true");
В> else
В> console.log("false");

В>печатает true, Chrome 75.0.3770.100 64 bit


Повторюсь, подчеркнув нужное:

Я целый месяц пребывал в убеждении, что пустой массив и пустая строка в JavaScript равносильны false (по аналогии с пустым списком и пустой строкой в Python). Оказывается, пустая строка — действительно false, а вот пустой массив — true.


А вот в Python пустой массив в аналогичной конструкции if дает false.
Re[3]: Python и JavaScript
От: MamutArGud  
Дата: 30.06.19 19:15
Оценка:
S>>Вообще некоторые опытные программисты говорят, что все языки одинаковые...
T>скажем так: есть люди, обладающие авторитетом в этой области, которые считают, что языков програмирования всего два: си-подобный и лиспо-подобный, всё остальное- это диалекты этих двух языков


Скорее, три-четыре (но вряд ли более): Си-подобные (и да, Питон идет в эту категорию), Лисп-подобные, ML-подобные и, возможно, Prolog-подобные.

Подавляющее большинство коммерческих языков Си-подобные. Большинство постепенно вбирают себя прагматичные и практические вещи из Лисп-подобных и ML-подобных языков.
Re[8]: Python и JavaScript
От: MamutArGud  
Дата: 30.06.19 19:21
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Здравствуйте, Lazytech, Вы писали:


L>>По идее, массив (array) в JavaScript — это аналог списка (list) в Python. Напомню, в Python еще есть настоящий массив (array).


P>Ты не понял. Я не только о массиве или списке. Я еще и о содержимом.

P>Еще раз. Питон обрабатывает числа или строки как таковые. А JS — как захочет. Я боюсь даже думать, что там с более сложными структурами происходит.
P>У меня сложилось впечатление, что JS выполняет операции так, чтобы не упасть во время работы. Отсюда странности.

Не без этого. Но так же не забываем, что Brendan Eich создал JS за 10 дней. Причем он хотел сделать Лисп/Схему, а ему сказали «делая Java-подобный язык». Вот и имеем что имеем

А конвертации типов описаны в стандарте (лень искать) и в целом имеют под собой обоснование, почему так, а не иначе. Но, получилось то, что получилось
Re[9]: Python и JavaScript
От: Privalov  
Дата: 04.07.19 09:05
Оценка: +2
Здравствуйте, MamutArGud, Вы писали:

MAG>Не без этого. Но так же не забываем, что Brendan Eich создал JS за 10 дней. Причем он хотел сделать Лисп/Схему, а ему сказали «делая Java-подобный язык». Вот и имеем что имеем


Мне практически не приходилось писать на JS. Но все же столкнулся как-то с необходимостью поправить пару скриптов. Ну и нарвался на интуитивно непонятные вещи. Типа чтобы числа отсортировать как таковые, надо компаратор писать.

MAG>А конвертации типов описаны в стандарте (лень искать) и в целом имеют под собой обоснование, почему так, а не иначе. Но, получилось то, что получилось


Когда-то я был шокирован тем фактом, что в компьютерных вычислениях целые и вещественные числа — это существенно различные объекты. Из школьной математики мы вынесли совсем другое знание. Понадобилось определенное время, чтобы усвоить этот материал и понять, почему оно так, а не иначе. Наступить пару раз на грабли. Старый добрый Фортран их раскидывал весьма щедро. За что я ему благодарен.

Может, в случае с JS увидели странное поведение интерпретатора и просто объявили особенностью языка? Предположим, не было времени править. 10 дней звучит, как фигак-фигак и в продакшн. А потом разработчики просто привыкли к такому поведению. И шокирует оно только новичков и/или посторонних.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.