Re: Python и JavaScript
От: Ватакуси Россия  
Дата: 07.06.19 14:06
Оценка: 2 (2) +4
L>Интересно, это только мне одному кажется, что знание основ Python позволяет значительно быстрее освоить такой непохожий на него язык, как JavaScript, и писать на нем более эффективный код?

Кажется, конечно.

Классическая Ява-скрипт — мрак полный и непохожа примерно на всё.
ES6-ES7 уже ближе ко многим современным языкам, но всё равно отстой.
Все будет Украина!
Re: Python и JavaScript
От: novitk США  
Дата: 16.06.19 07:48
Оценка: 1 (1) +3
Здравствуйте, Lazytech, Вы писали:

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


IMHO, не особо. Рантайм конечно похож, но гимор с JS будет совершенно другого уровня. Проблема уже не столько сам язык, его как раз подтянули последнее время, а неоправдано сложная экосистема из говна и палок. Если жизнь не заставляет, я бы советовал его избегать и покопать в сторону чего-нибудь простого статического (Ява).
Re: Python и JavaScript
От: GarryIV  
Дата: 07.06.19 14:12
Оценка: +4
Здравствуйте, Lazytech, Вы писали:

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


Вообще знание одного императивного языка упрощает изучение другого.
WBR, Igor Evgrafov
Re: Python и JavaScript
От: morgot  
Дата: 09.06.19 14:01
Оценка: +1 :)))
Здравствуйте, Lazytech.

Питон не нужен. Абсолютно бесполезный язык, приучающий программиста считать пробелы и табы, а не думать над кодом.
Re: Python и JavaScript
От: Privalov  
Дата: 09.06.19 16:33
Оценка: :))) :)
Здравствуйте, Lazytech, Вы писали:

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


А про темную сторону JavaScript тебе еще не рассказали?

  Довольно баянистая, зато отражающая правду жизни картинка.
Re[4]: Python и JavaScript
От: Буравчик Россия  
Дата: 07.06.19 20:33
Оценка: 2 (2) +1
Здравствуйте, Lazytech, Вы писали:

L>Извиняюсь, а Forth куда относится?


К лисп-подобным. Это лисп-наоборот.
Best regards, Буравчик
Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 07.06.19 13:03
Оценка: +1 :))
Интересно, это только мне одному кажется, что знание основ Python позволяет значительно быстрее освоить такой непохожий на него язык, как JavaScript, и писать на нем более эффективный код?
Отредактировано 07.06.2019 13:04 Lazytech . Предыдущая версия .
Re[3]: Python и JavaScript
От: shrewd  
Дата: 07.06.19 14:36
Оценка: :)))
Здравствуйте, Lazytech, Вы писали:

L>Я даже не знаю, что такое «императивный»...


Википедия не открывается что ли?
Re[2]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 07.06.19 14:37
Оценка: +1 -1 :)
Здравствуйте, shrewd, Вы писали:

S>Вообще некоторые опытные программисты говорят, что все языки одинаковые...


Я вот точно не являюсь опытным программистом, но уже заметил, как иногда невесело обходиться без мощных питоновских инструментов вроде set и dict. Хотя в JavaScript есть свой Set, а вместо dict можно использовать объекты со свойствами, возможности при этом совсем куцые...

  P.S. Судите сами...
Вариант 1:
/**
 * @param {string} s
 * @return {number}
 */
var firstUniqChar = function(s) {
    let n = s.length;
    let charCounts = {};
    
    for (let i = 0; i < n; i++) {
        charCounts[s[i]] = (charCounts[s[i]] || 0) + 1;
    }
    
    for (let i = 0; i < n; i++) {
        if (charCounts[s[i]] == 1) {
            return i;
        }
    }

    return -1;
};

Runtime: 100 ms, faster than 61.06% of JavaScript online submissions for First Unique Character in a String.
Memory Usage: 38.3 MB, less than 56.34% of JavaScript online submissions for First Unique Character in a String.


Вариант 2:
/**
 * @param {string} s
 * @return {number}
 */
var firstUniqChar = function(s) {
    let n = s.length;
    let chars = new Array();
    let counts = new Array();
    
    for (let i = 0; i < n; i++) {
        let charIndex = chars.indexOf(s[i]);
        if (charIndex == -1) {
            chars.push(s[i]);
            counts.push(1);
        } else {
            counts[charIndex]++;
        }
    }

    let m = chars.length;
    
    for (let i = 0; i < m; i++) {
        if (counts[i] == 1) {            
            return s.indexOf(chars[i]);
        }
    }
    
    return -1;
};

Runtime: 100 ms, faster than 61.06% of JavaScript online submissions for First Unique Character in a String.
Memory Usage: 37.8 MB, less than 75.30% of JavaScript online submissions for First Unique Character in a String.


Если в JavaScript оба варианта одинаково тормозные, то в Python аналог первого варианта работал бы заметно быстрее аналога второго.
Отредактировано 07.06.2019 15:14 Lazytech . Предыдущая версия .
Re[2]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 08.06.19 04:04
Оценка: -1 :))
Здравствуйте, PM, Вы писали:

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


  Навеяло...

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

Однако, если вы надеетесь в поездке "как-нибудь интуитивно" разобраться в разговорном чешском языке — вас ждет разочарование.

На слух русскоязычные туристы могут воспринимать не больше 20% из чешской разговорной речи. Зато большинство надписей будет казаться вам забавными, но все же "понятными". Но не заблуждайтесь, часто эти надписи означают все с точностью до наоборот. Тем не менее, давайте попробуем разбираться и читать хотя бы чешские вывески, указатели и объявления. В путешествии по Чехии это очень пригодится: Как вы думаете, "Рыхлая очерственная потравина" — это вкусно?

Классический случай, — нашему туристу не придет в голову покупать продукты в заведении с вывеской "Потравины". А зря — "Потравины" — это место, где в Чехии можно купить еду и напитки, и значит это слово — "Продукты".

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

потравины — продукты
очерственные потравины — свежие продукты
слухатка — наушники
змерзлина — мороженое
зверина — дичь
запомнить — забыть
вунь — запах
запах — вонь
вонявка — духи
родина — семья
страна — партия
овоци — фрукты
зеленина — овощи
летедле — самолет
седадло — кресло
летушка — стюардесса
зачаточник — начинающий
езденка — билет
обсажено — занято
пирделка — девушка
барак — жилой дом
позор — внимание
Позор слева — внимание, распродажа (весьма полезно знать!)
Позор на пса! — Осторожно злая собака!
Позор полиция воруе — Внимание полиция предупреждает.
Падло с быдлом на плавидле — статный парень с веслом на лодке.
вертульник — вертолет
дивадло — театр
шлепадло — катамаран
поноски — носки
высавач — пылесос
плин — газ
барак — жилой дом
Aхой, пирделка! — Привет подружка!!!. (я рыдал!!!!)
А уж какие изумительные сочетания получаются:

Дивки даром — объявление при входе в клуб, где девушки не платят за вход
Мясокомбинат Писек — "Писек" — это город в центре Чехии
Наши туристы могут смеяться до икоты, глядя на рекламные щиты "Кока-колы". Там красуется традиционная замёрзшая бутылочка, а надпись на щите гласит: "Доконали тварь!". Между тем, в переводе с чешского это всего лишь мощный рекламный слоган — "Совершенное творение!".

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


(c) Интернет
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[3]: Python и JavaScript
От: Буравчик Россия  
Дата: 09.06.19 21:10
Оценка: 3 (1) +1
Здравствуйте, Lazytech, Вы писали:

L>К сожалению, я не знаю ни Котлина (это вроде подмножество Java для Android?), ни C#. Мое первое сообщение в этой теме основано на том, что, начав изучать JavaScript, я уже через неделю, несмотря на весьма слабое знание этого языка, довольно-таки уверенно решал на нем тренировочные задачи, тогда как в случае с Python промежуток между началом изучения языка и переходом к практикуму измерялся месяцами.


  Простое лучше сложного (питон)
class Solution:
    """Given a list of strings words representing an English Dictionary, 
    find the longest word in words that can be built one character at a time by other words in words. 
    If there is more than one possible answer, return the longest word with the smallest lexicographical order."""
    
    def word_prefixes(self, word: str) -> List[str]:
        """Возвращает все префиксы слова (не включает само слово и нулевой префикс)"""
        for last_char_index in range(1, len(word)):
            yield word[0:last_char_index]
            
    def word_can_be_built_from_other_words(self, word: str) -> bool:
        """Проверка построения слова в соответствии с заданием"""
        return all([prefix in self.words_set for prefix in self.word_prefixes(word)])
            
    def longestWord(self, words: List[str]) -> str:
        """Поиск наиболее длинного слова, которое можно построить из имеющихся слова, прибавляя по одному символу"""
        self.words_set = set(words)
        
        # просматриваем слова с максимальной длиной, в лексикографическом порядке
        for word in sorted(words, key=lambda w: (-len(w), w)):
            if self.word_can_be_built_from_other_words(word):
                return word
Best regards, Буравчик
Re[3]: Python и JavaScript
От: GarryIV  
Дата: 08.06.19 07:47
Оценка: 1 (1) +1
Здравствуйте, Lazytech, Вы писали:

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


L>
  Навеяло...
L>Вот такой удивительный и непредсказуемый чешский язык.[/q]
L>(c) Интернет


Тем не менее знание русского дает +20 к изучению чешского. Если читать то многое понятно.
А болгарский вообще как родной:

Cъeдинeнитe aмepиĸaнcĸи щaти плaниpaт дa пoмoгнaт нa тaйвaнcĸoтo пpaвитeлcтвo дa oбнoви въopъжeниeтo cи, ĸaтo пoзвoлят нa Taйпe дa ĸyпят opъжeйни cиcтeми нa cтoйнocт милиapди дoлapи, вĸлючитeлнo нaд 100 тaнĸa — xoд, ĸoйтo вeчe пpeдизвиĸвa ĸpитиĸa oт Πeĸин, пишe Тhе Wаll Ѕtrееt Јоurnаl.

WBR, Igor Evgrafov
Re[5]: Python и JavaScript
От: Буравчик Россия  
Дата: 10.06.19 06:58
Оценка: 1 (1) +1
Здравствуйте, Lazytech, Вы писали:

L>Разве? Я о том, что в JavaScript, как и в Python, бывают такие заковыристые конструкции:

L>Как мне кажется, это даже покруче смешения чисел со строками.

Во-первых, конструкция
myVar || 0

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

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

Поэтому на питоне было бы скорее все так:
itemCounts[item] = itemCounts.get(item, 0) + 1

или
itemCounts.setdefault(item, 0)
itemCounts[item] += 1;

или вообще лучше использовать defaultdict. Как раз для этих целей сделан (в стандартной библиотеке).
Best regards, Буравчик
Отредактировано 10.06.2019 6:59 Буравчик . Предыдущая версия .
Re[9]: Python и JavaScript
От: Privalov  
Дата: 04.07.19 09:05
Оценка: +2
Здравствуйте, MamutArGud, Вы писали:

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


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

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


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

Может, в случае с JS увидели странное поведение интерпретатора и просто объявили особенностью языка? Предположим, не было времени править. 10 дней звучит, как фигак-фигак и в продакшн. А потом разработчики просто привыкли к такому поведению. И шокирует оно только новичков и/или посторонних.
Re[2]: Python и JavaScript
От: takTak  
Дата: 07.06.19 14:23
Оценка: 3 (1)
L>>Интересно, это только мне одному кажется, что знание основ Python позволяет значительно быстрее освоить такой непохожий на него язык, как JavaScript, и писать на нем более эффективный код?

S>Вообще некоторые опытные программисты говорят, что все языки одинаковые...


скажем так: есть люди, обладающие авторитетом в этой области, которые считают, что языков програмирования всего два: си-подобный и лиспо-подобный, всё остальное- это диалекты этих двух языков
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[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[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: Python и JavaScript
От: PM  
Дата: 07.06.19 18:53
Оценка: 1 (1)
Здравствуйте, Lazytech, Вы писали:

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


Интересно, это только мне одному кажется, что знание одного языка романо-германской группы позволяет быстрее освоить язык той же группы?
Re: Python и JavaScript
От: vsb Казахстан  
Дата: 09.06.19 17:15
Оценка: 1 (1)
Все языки похожи друг на друга. Выучил хорошо один, остальные достаточно просто посмотреть, что там вместо фигурных скобочек и всё.

Хаскель исключение. Думаю, его придумали инопланетяне.
Re[3]: Python и JavaScript
От: Буравчик Россия  
Дата: 09.06.19 21:13
Оценка: 1 (1)
Здравствуйте, Lazytech, Вы писали:

L>К сожалению, я не знаю ни Котлина (это вроде подмножество Java для Android?), ни C#. Мое первое сообщение в этой теме основано на том, что, начав изучать JavaScript, я уже через неделю, несмотря на весьма слабое знание этого языка, довольно-таки уверенно решал на нем тренировочные задачи, тогда как в случае с Python промежуток между началом изучения языка и переходом к практикуму измерялся месяцами.


Принципы программирования остаются примерно одинаковыми на разных языках.
С питоном получилось дольше т.к. осваивал начальные принципы. При работе с JavaScript изучал уже сам язык.
Best regards, Буравчик
Re[3]: Python и JavaScript
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 10.06.19 06:48
Оценка: 1 (1)
Здравствуйте, Lazytech, Вы писали:

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


S>> А мне кажется, что знание Котлина или C# позволяет значительно быстрее освоить TypeScript. Учитывая аннотацию типов и сближение конструкций C#, учитывая общего для них создателя Хейлсберга


L>К сожалению, я не знаю ни Котлина (это вроде подмножество Java для Android?), ни C#. Мое первое сообщение в этой теме основано на том, что, начав изучать JavaScript, я уже через неделю, несмотря на весьма слабое знание этого языка, довольно-таки уверенно решал на нем тренировочные задачи, тогда как в случае с Python промежуток между началом изучения языка и переходом к практикуму измерялся месяцами.


Тогда лучше изучать TypeScript. Это поможет изучать и другие языки как статически типизированные так и динамические.
Ну и сейчас многие JavaScript-фреймворк в качестве базового языка выбирают TypeScript
и солнце б утром не вставало, когда бы не было меня
Re[5]: Python и JavaScript
От: Буравчик Россия  
Дата: 10.06.19 07:14
Оценка: 1 (1)
Здравствуйте, Lazytech, Вы писали:

L>P.S. На всякий случай уточняю, что мой выбор ЯП обусловлен в первую очередь отсутствием фундаментального айтишного образования. Поначалу выбрал Python, а потом несколько человек в этой теме
Автор: Lazytech
Дата: 04.05.19
указали на то, что с этим языком мне ничего не светит.


Я думаю, они ошибаются.
Питон будет одним из языков мэйнстрима, также как и js (который, скорее всего, доведут до ума).
Наравне с kotlin, java, c#
Best regards, Буравчик
Re[7]: Python и JavaScript
От: Privalov  
Дата: 10.06.19 07:43
Оценка: 1 (1)
Здравствуйте, Lazytech, Вы писали:

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


Ты не понял. Я не только о массиве или списке. Я еще и о содержимом.
Еще раз. Питон обрабатывает числа или строки как таковые. А JS — как захочет. Я боюсь даже думать, что там с более сложными структурами происходит.
У меня сложилось впечатление, что JS выполняет операции так, чтобы не упасть во время работы. Отсюда странности.
Могли бы просто on error resume next ему приделать, как в VB6. Тогда бы вообще не падало. А так все же ошибки иногда выбрасывает.
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[2]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 07.06.19 14:16
Оценка: +1
Здравствуйте, GarryIV, Вы писали:

GIV>Вообще знание одного императивного языка упрощает изучение другого.


Я даже не знаю, что такое «императивный»...
Re: Python и JavaScript
От: shrewd  
Дата: 07.06.19 14:16
Оценка: :)
Здравствуйте, Lazytech, Вы писали:

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


Вообще некоторые опытные программисты говорят, что все языки одинаковые...
Re[3]: Python и JavaScript
От: zverjuga Беларусь  
Дата: 09.06.19 19:27
Оценка: :)
Здравствуйте, Lazytech, Вы писали:

L>На этот случай в JavaScript есть Number(), parseInt(), parseFloat(), toString() и т. д. Я уже привык к тому, что свойства объекта — строки (даже если с виду это числа), тогда как индексы массива — просто числа.


L>P.S. Ах да, есть же еще булевы переменные.



уже дерзить начинаешь?
проклятый антисутенерский закон
Re: Python и JavaScript
От: L.K. Марс  
Дата: 07.06.19 13:16
Оценка:
Питон уже выучен что ли? Кто-то недавно каялся, что не справляется даже с простыми учебными задачами.
Re[2]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 07.06.19 14:02
Оценка:
Здравствуйте, L.K., Вы писали:

LK>Питон уже выучен что ли? Кто-то недавно каялся, что не справляется даже с простыми учебными задачами.


знание основ Python




  Объемистое сообщение...
Michael
Автор: Michael
Дата: 21.05.19

я сам питонист и бекендщик и не навижу javascript и фронт-енд
но скажу так:

1) питон всегда требуется в комбинации с чем-то и этих комбинаций много, кому то нужно python+flask+mysql, python+flask+mongodb, python+django+aws и т.п.
то есть вам нужно будет знать как минимум ещё sql и скорей всего ещё nosql.

2) поэтому пройти собеседование на питон вам будет практически не реально. нигде не нужен чистый питон.
вы можете много знать про питон но вас дополнительно спросят отличие Left join от inner join в sql. Или спросят как лучше запускать серверное приложение на питоне.

допустим у меня есть простые задачи для вас на связке python+flask+mongodb, но в будущем будет облом когда вы пойдёте на собеседование где нужен будет sql или django.


3) в этом плане изучить фронтенд с javascript и трудоустроиться значительно проще. берёте изучаете один Фреймворк типа angular, react или vue.js(+1) и дела нет какая там база данных или сервер.
вы можете только дёрнуть API которые вам дадут серверные разработчики (которые на питон или php).
уровень алгоритмов которые нужны на фронтенде на порядок проще. хитросплетения многопоточного программирования? их просто нет в javascript (он однопоточен).
По мне "подъеба.ся" на собеседовании по этим фрейворкам сложнее, отчасти потому что они сами
по себе молодые эти фреймворки.

Более того — у фронтендщиков работы больше. У меня в одном проекте интерфейс приложения меняется каждые две недели, а вот бекенд очень редко, и соотношение разработчиков с перевесом на фронтенд.
Сюда же добавлю про гибридные приложения — типа когда интерфейс пишется на js/html5 и потом пакуется в "обычное" приложение для айфона.
Вообщем Chrome и простой текстовый редактор типа Atom и пишите крестики-нолики на vue.js. И уже можно пойти на собеседование (стучитесь).

Отредактировано 07.06.2019 14:07 Lazytech . Предыдущая версия .
Re[4]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 07.06.19 14:38
Оценка:
Здравствуйте, shrewd, Вы писали:

S>Википедия не открывается что ли?


Нет, меня там не забанили, и я уже открыл и прочитал статьи про императивное и декларативное программирование.
Re[3]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 07.06.19 14:39
Оценка:
Здравствуйте, takTak, Вы писали:

T>скажем так: есть люди, обладающие авторитетом в этой области, которые считают, что языков програмирования всего два: си-подобный и лиспо-подобный, всё остальное- это диалекты этих двух языков


Извиняюсь, а Forth куда относится?
Re[3]: Python и JavaScript
От: Michael7 Россия  
Дата: 07.06.19 20:57
Оценка:
Здравствуйте, takTak, Вы писали:

T>скажем так: есть люди, обладающие авторитетом в этой области, которые считают, что языков програмирования всего два: си-подобный и лиспо-подобный, всё остальное- это диалекты этих двух языков


Пролог не Си и не лиспоподобный. И есть еще такой нынче мало известный язык как Снобол. Тоже как-то не туда и не сюда.
Продолжая тему интересно к каким типам еще отнести языки описания лексики и грамматики для программ типа yacc и lex.
Re[2]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 09.06.19 14:24
Оценка:
Здравствуйте, morgot, Вы писали:

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


Ну, не так же толсто.
Re: Python и JavaScript
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 09.06.19 14:37
Оценка:
Здравствуйте, Lazytech, Вы писали:

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


А мне кажется, что знание Котлина или C# позволяет значительно быстрее освоить TypeScript. Учитывая аннотацию типов и сближение конструкций C#, учитывая общего для них создателя Хейлсберга
и солнце б утром не вставало, когда бы не было меня
Re[2]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 09.06.19 14:54
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> А мне кажется, что знание Котлина или C# позволяет значительно быстрее освоить TypeScript. Учитывая аннотацию типов и сближение конструкций C#, учитывая общего для них создателя Хейлсберга


К сожалению, я не знаю ни Котлина (это вроде подмножество Java для Android?), ни C#. Мое первое сообщение в этой теме основано на том, что, начав изучать JavaScript, я уже через неделю, несмотря на весьма слабое знание этого языка, довольно-таки уверенно решал на нем тренировочные задачи, тогда как в случае с Python промежуток между началом изучения языка и переходом к практикуму измерялся месяцами.

  P.S. Дабы не быть голословным...
Одна из первых задач, которую я решил на JavaScript:
/**
 * @param {string[]} words
 * @return {string}
 */
var longestWord = function(words) {
    totalWords = words.length;
    words.sort(function(a, b) { // Sort by word length
        return a.length - b.length;
    });
    var wordLen = 0;
    var maxLen = words[totalWords-1].length;
    var wordsByLen = new Array(maxLen);
    for (i in words) {
        j = words[i].length - 1;
        wordsByLen[j] = wordsByLen[j] || [];
        wordsByLen[j].push(words[i]);
    };

    wordsByLen2 = new Array(maxLen);
    wordsByLen2[0] = new Set(wordsByLen[0])

    // for (i = 0; i < wordsByLen2.length; i++) {
    for (i = 1; i < wordsByLen2.length; i++) {
        wordsByLen2[i] = new Set();
    }    

    var tryout = function(level, word, arr, arr2) {
        maxLen = arr.length;
        if (level < maxLen - 1) {
            for (j in arr[level+1]) {
                if (word == arr[level+1][j].slice(0, level+1)) {
                    if (!arr2[level+1].has(arr[level+1][j])) {
                        arr2[level+1].add(arr[level+1][j]);
                        tryout(level+1, arr[level+1][j], arr, arr2);
                    }
                }
            }            
        }
    }
    
    for (i in wordsByLen[0]) {
        tryout(0, wordsByLen[0][i], wordsByLen, wordsByLen2);        
    }
    
    if (!wordsByLen2[0]) {
        return "";
    };
    
    var longestWord = "";   
    var word = "";
    for (i = 0; i < wordsByLen2.length; i++) {
        if (wordsByLen2[i]) {
            for (word of wordsByLen2[i]) {
                if (!longestWord || longestWord.length < word.length || longestWord > word) {
                    longestWord = word;
                }
            };
        } else {
            break;
        }        
    }
    
    return longestWord;    
};
Отредактировано 09.06.2019 15:04 Lazytech . Предыдущая версия . Еще …
Отредактировано 09.06.2019 15:03 Lazytech . Предыдущая версия .
Re[2]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 09.06.19 16:46
Оценка:
Здравствуйте, Privalov, Вы писали:

P>А про темную сторону JavaScript тебе еще не рассказали?


На этот случай в JavaScript есть Number(), parseInt(), parseFloat(), toString() и т. д. Я уже привык к тому, что свойства объекта — строки (даже если с виду это числа), тогда как индексы массива — просто числа.

P.S. Ах да, есть же еще булевы переменные.
Отредактировано 09.06.2019 16:49 Lazytech . Предыдущая версия .
Re[2]: Python и JavaScript
От: Danchik Украина  
Дата: 09.06.19 18:23
Оценка:
Здравствуйте, morgot, Вы писали:

M>Здравствуйте, Lazytech.


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


Вот другое мнение сложилось: думать над кодом, но не/редко думать как это дальше будет саппортится.
Re[2]: Python и JavaScript
От: Nikе Россия  
Дата: 09.06.19 19:42
Оценка:
Здравствуйте, morgot, Вы писали:

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


Его обычно изучают люди, для которых программирование это что-то вторичное или третичное. Поэтому его популярность идёт от академической среды. По сути, если бы не МЛ то про него бы давно забыли бы наверное.
Нужно разобрать угил.
Re[2]: Python и JavaScript
От: Nikе Россия  
Дата: 09.06.19 19:46
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Хаскель исключение. Думаю, его придумали инопланетяне.


Хаскел это чисто функциональный язык, его придумали математики. Ничего особо сложного в нём нет. Есть море других функциональных языков. А ещё есть Пролог, SQL и другие типичные языки для своих парадигм программирования.
А по поводу инопланетян — так я встречал мнение ведущих гуманитариев про то, что идея биткоина была послана инопланетянами, т.к. люди не могли такое придумать. Ну не в курсе чуваки про многолетнюю борьбу инженеров с правообладателями
Нужно разобрать угил.
Re[4]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 10.06.19 04:32
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Принципы программирования остаются примерно одинаковыми на разных языках.

Б>С питоном получилось дольше т.к. осваивал начальные принципы. При работе с JavaScript изучал уже сам язык.

Вроде логично, только вот до того, как приступить к изучению питона, я уже худо-бедно знал VBA и даже немного Forth.
Re[4]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 10.06.19 04:38
Оценка:
Здравствуйте, zverjuga, Вы писали:

Z>уже дерзить начинаешь?


Разве? Я о том, что в JavaScript, как и в Python, бывают такие заковыристые конструкции:
itemCounts[item] = (itemCounts[item] || 0) + 1;

Как мне кажется, это даже покруче смешения чисел со строками.
Re[3]: Python и JavaScript
От: Privalov  
Дата: 10.06.19 05:30
Оценка:
Здравствуйте, Lazytech, Вы писали:

L>На этот случай в JavaScript есть Number(), parseInt(), parseFloat(), toString() и т. д. Я уже привык к тому, что свойства объекта — строки (даже если с виду это числа), тогда как индексы массива — просто числа.


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

Нигде ни разу не видел, чтобы язык так вольно с данными обращался. Прибавили число к строке и получили строку. Вспомнили первый класс, проверили вычитанием, получили число. Отняли строку от строки ('2' — '3'), и получили число -1. С таким подходом я лучше вся жизнь на Фортране 4 и Коболе работать буду.

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

Кстати, на той картинке представлен прочтейший случай. В реальности все еще немного веселее.
Re[4]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 10.06.19 06:17
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Я как-то однажды попробовал отсортировать JS небольшой смассив чисел. Вбил команду в консоли браузера. И получил массив чисел, отсортированный, как массив строк в лексикографическим порядке. А чтобы сказать, что это числа, выяснилось, что сортировщику нужно было еще компаратор оформить.


А еще JavaScript не умеет сравнивать массивы (array) так, как Python сравнивает списки (list). Приходится всё вручную делать, через итерацию.

P>Нигде ни разу не видел, чтобы язык так вольно с данными обращался. Прибавили число к строке и получили строку. Вспомнили первый класс, проверили вычитанием, получили число. Отняли строку от строки ('2' — '3'), и получили число -1. С таким подходом я лучше вся жизнь на Фортране 4 и Коболе работать буду.

P>В JS я полный теоретик. Никогда ничего сложнее hello, world на нем не делал, да и это — для себя только. Но такое поведение языка меня немного удивило.
P>Кстати, на той картинке представлен прочтейший случай. В реальности все еще немного веселее.

Дэти, слова «тарелька» и «вилька» пишутся бэз мягкого знака, а «сол» и «фасол» — с мягким знаком. Запомнитэ эта, дэти, патаму шта панят эта нэвазможна!



P.S. На всякий случай уточняю, что мой выбор ЯП обусловлен в первую очередь отсутствием фундаментального айтишного образования. Поначалу выбрал Python, а потом несколько человек в этой теме
Автор: Lazytech
Дата: 04.05.19
указали на то, что с этим языком мне ничего не светит.
Отредактировано 10.06.2019 6:25 Lazytech . Предыдущая версия . Еще …
Отредактировано 10.06.2019 6:22 Lazytech . Предыдущая версия .
Отредактировано 10.06.2019 6:22 Lazytech . Предыдущая версия .
Re[5]: Python и JavaScript
От: Privalov  
Дата: 10.06.19 06:51
Оценка:
Здравствуйте, Lazytech, Вы писали:

L>А еще JavaScript не умеет сравнивать массивы (array) так, как Python сравнивает списки (list). Приходится всё вручную делать, через итерацию.


Я не вспомню, JS сортировал массив чисел или список. Дело тут в другом. Я ожидал, что JS воспримет числа как таковые, а он мне показал результат, какой получается после работы со строками. В Питоне я такого никогда не видел. По крайней мере, при попытке прибавить к строке число, Питон свалится. И если в него ввести массив (или список) чисел, то это будут числа. Без всяких сюрпризов.
Re[6]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 10.06.19 07:14
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Я не вспомню, JS сортировал массив чисел или список.


По идее, массив (array) в JavaScript — это аналог списка (list) в Python. Напомню, в Python еще есть настоящий массив (array).
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[2]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 11.06.19 02:14
Оценка:
Здравствуйте, c-smile, Вы писали:

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


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

Оказывается, в JavaScript все-таки есть близкий аналог питоновского dictMap().
Re[2]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 16.06.19 00:35
Оценка:
Здравствуйте, Basil2, Вы писали:

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


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

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


А есть ли в этом насущная необходимость? Насколько я понимаю, TypeScript имеет смысл осваивать разработчикам, которые намереваются использовать навороченный веб-фреймворк вроде Angular, который новичку вроде меня, наверное, не по зубам.
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[2]: Python и JavaScript
От: Lazytech Ниоткуда  
Дата: 16.06.19 16:49
Оценка:
Здравствуйте, novitk, Вы писали:

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


Я по наивности думал, что Java — для избранных, тогда как JavaScript — относительно простой ЯП, на котором пишут все, кому не лень.
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-подобный язык». Вот и имеем что имеем

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