Имя: Пароль:
IT
 
Почему язык Python такой популярный?
0 megabax
 
31.10.16
21:22
Добрый день. Я тут начала изучать Python, и, если честно, был сильно удивлён некоторыми фактами. Во-первых, этот язык интерпретируемый и работает медленно. Во-вторых, в нем нестрогая динамическая типизация, то есть, мало того что не обязательно предварительно объявить переменную, так он еще и может менять свой тип по ходу работы программы, и, более того, если мы обратимся к несуществующему полю объекта, то мы получим вовсе не исключительную ситуацию, а просто создадим это поле. То есть, с ООП там, если грубо говорить, немножко бардак.
Но тем не менее, почему то Python очень популярный, им пользуется Яндекс, Гугл, на нем написано много разные программ, а многие серьёзные компании в своих вакансиях предъявляют требование обязательного знания Python.
Дык почему Python так популярен? Что в нем такого крутого, что, несмотря на очевидные недостатки, делает его таким популярным?
165 Кирпич
 
01.11.16
18:00
(162) проще говоря, нет оптимизации типа dynamic
166 Serginio1
 
01.11.16
18:01
(165) Читай 163
167 Кирпич
 
01.11.16
19:09
(166) почитал. Нафиг я это читал? Pypy делает быстро, .net медленно.
168 spock
 
01.11.16
19:10
(140) примеры не одинаковые. Range выделяет весь массив в памяти, а потом итерирует по нему. Замени на xrange чтоли.
169 Кирпич
 
01.11.16
19:40
(168) чота я не заметил, как выделяется полгига памяти под массив
170 Serginio1
 
01.11.16
19:50
(167) Угу у тебя пример того, что никогда не возникает в жизни ни разу.

В реальной жизни приходится работать с утиной типизацией то есть с объектами неизвестного типа, но имеющие определенную сигнатуру методов и их название. Например COM, ExpandoObject (аналог структура) DynamicObject (нет аналога) и объекты неизвестного типа

Для COM и обычных объектов можно использовать Reflection.
Так во dynamic быстрее Reflection раз в 13-30

http://stackoverflow.com/questions/13193799/performance-cost-of-using-dynamic-typing-in-net

И при этом вызов по сигнатуре. Для интереса проведи тест для установки свойства, вызова метода с не dynamic параметрами.
171 Serginio1
 
01.11.16
19:52
Кстати можно и IronPython попробовать. Там как раз все на DLR
172 Serginio1
 
01.11.16
19:53
Кстати хорошая презентация про то как работает DLR http://www.slideshare.net/yu5k3/dlr-54012646
173 Кирпич
 
01.11.16
20:20
(170) "Угу у тебя пример того, что никогда не возникает в жизни ни разу."
Ну в .NET я конечно не стану какие нибудь гигантские матрицы на dynamic считать, а на PyPy получается можно.
Я просто подумал, что компилятор NET такой же умный как PyPy. Оказалось нет. Ну и пофиг.
174 Loky9
 
01.11.16
20:26
(171) Он тормозней цэпитона раз в десять.
Нашел такую штуку: http://numba.pydata.org/
Это даже круче pypy!
175 Loky9
 
01.11.16
20:30
(149) Нужно было разобрать xml в архивах, но разбор был не самой большой проблемой в задаче.
На баше это сделать можно, но неудобно, громоздко и плохосопровождаемо.
176 Jija Grenkov
 
01.11.16
22:30
Пайтон часто используется как вспомогательный язык. На пример как замена bash скриптов. На Пайтон часто пишут вспомогательные утилиты не требовательным к производительности. Так же Пайтон широко используется при анализе данных, но если данных много то на Пайтоне делают только прототипы, а основную реализацию на jvm языках. Производительность Пайтон скриптов никогда не была высокой
177 Jija Grenkov
 
01.11.16
22:32
В разработке классических приложений Пайтон не слишком популярен
178 Loky9
 
01.11.16
23:05
(176) "Производительность Пайтон скриптов никогда не была высокой"
-Ты что, дальтоник, Скрипач, - зелёный цвет от оранжевого отличить не можешь?

@jit
def mandel(x, y, max_iters):
    """
    Given the real and imaginary parts of a complex number,
    determine if it is a candidate for membership in the Mandelbrot
    set given a fixed number of iterations.
    """
    i = 0
    c = complex(x,y)
    z = 0.0j
    for i in range(max_iters):
        z = z*z + c
        if (z.real*z.real + z.imag*z.imag) >= 4:
            return i

    return 255

print(mandel.inspect_asm((numba.float64, numba.float64, numba.int64)))

>>>>>
.text
        .file   "mandel"
        .section        .rodata.cst8,"aM",@progbits,8
        .align  8
.LCPI0_0:
        .quad   4616189618054758400
        .text
        .globl  __main__.mandel$27.float64.float64.int64
        .align  16, 0x90
        .type   __main__.mandel$27.float64.float64.int64,@function
__main__.mandel$27.float64.float64.int64:
        movsd   40(%rsp), %xmm0
        movq    48(%rsp), %r9
        xorl    %eax, %eax
        testq   %r9, %r9
        cmovsq  %rax, %r9
        xorpd   %xmm2, %xmm2
        movabsq $.LCPI0_0, %r8
        xorpd   %xmm1, %xmm1
        .align  16, 0x90
.LBB0_1:
        leaq    (%r9,%rax), %rdx
        testq   %rdx, %rdx
        jle     .LBB0_4
        movapd  %xmm2, %xmm4
        mulsd   %xmm4, %xmm4
        mulsd   %xmm1, %xmm2
        mulsd   %xmm1, %xmm1
        subsd   %xmm1, %xmm4
        addsd   %xmm2, %xmm2
        addsd   %xmm3, %xmm4
        movapd  %xmm2, %xmm1
        addsd   %xmm0, %xmm1
        movapd  %xmm4, %xmm2
        mulsd   %xmm4, %xmm4
        movapd  %xmm1, %xmm5
        mulsd   %xmm5, %xmm5
        addsd   %xmm4, %xmm5
        decq    %rax
        ucomisd (%r8), %xmm5
        jb      .LBB0_1
        notq    %rax
        movq    %rax, (%rcx)
        xorl    %eax, %eax
        retq
.LBB0_4:
        movq    $255, (%rcx)
        xorl    %eax, %eax
        retq
.Lfunc_end0:
        .size   __main__.mandel$27.float64.float64.int64, .Lfunc_end0-__main__.mandel$27.float64.float64.int64

        .section        .rodata.cst8,"aM",@progbits,8
        .align  8
.LCPI1_0:
        .quad   4616189618054758400
        .text
        .globl  cpython.__main__.mandel$27.float64.float64.int64
        .align  16, 0x90
        .type   cpython.__main__.mandel$27.float64.float64.int64,@function
cpython.__main__.mandel$27.float64.float64.int64:
        .cfi_startproc
        pushq   %r15
.Ltmp0:
        .cfi_def_cfa_offset 16
        pushq   %r14
.Ltmp1:
        .cfi_def_cfa_offset 24
        pushq   %rsi
.Ltmp2:
        .cfi_def_cfa_offset 32
        pushq   %rdi
.Ltmp3:
        .cfi_def_cfa_offset 40
        pushq   %rbx
.Ltmp4:
        .cfi_def_cfa_offset 48
        subq    $112, %rsp
        movapd  %xmm7, 96(%rsp)
        movapd  %xmm6, 80(%rsp)
.Ltmp5:
        .cfi_def_cfa_offset 160
.Ltmp6:
        .cfi_offset %rbx, -48
.Ltmp7:
        .cfi_offset %rdi, -40
.Ltmp8:
        .cfi_offset %rsi, -32
.Ltmp9:
        .cfi_offset %r14, -24
.Ltmp10:
        .cfi_offset %r15, -16
.Ltmp11:
        .cfi_offset %xmm6, -80
.Ltmp12:
        .cfi_offset %xmm7, -64
        movq    %rcx, %rsi
        leaq    56(%rsp), %rax
        movq    %rax, 48(%rsp)
        leaq    64(%rsp), %rax
        movq    %rax, 40(%rsp)
        leaq    72(%rsp), %rax
        movq    %rax, 32(%rsp)
        movabsq $.const.mandel, %rax
        movabsq $PyArg_UnpackTuple, %rbx
        movl    $3, %r8d
        movl    $3, %r9d
        movq    %rdx, %rcx
        movq    %rax, %rdx
        callq   *%rbx
        movl    %eax, %ecx
        xorl    %eax, %eax
        testl   %ecx, %ecx
        je      .LBB1_16
        testq   %rsi, %rsi
        je      .LBB1_17
        cmpq    $0, 24(%rsi)
        je      .LBB1_3
        movq    72(%rsp), %rcx
        movabsq $PyNumber_Float, %rdi
        callq   *%rdi
        movq    %rax, %rsi
        movabsq $PyFloat_AsDouble, %rbx
        movq    %rsi, %rcx
        callq   *%rbx
        movapd  %xmm0, %xmm6
        movabsq $Py_DecRef, %r15
        movq    %rsi, %rcx
        callq   *%r15
        movabsq $PyErr_Occurred, %r14
        callq   *%r14
        movq    %rax, %rcx
        xorl    %eax, %eax
        testq   %rcx, %rcx
        jne     .LBB1_16
        movq    64(%rsp), %rcx
        callq   *%rdi
        movq    %rax, %rsi
        movq    %rsi, %rcx
        callq   *%rbx
        movapd  %xmm0, %xmm7
        movq    %rsi, %rcx
        callq   *%r15
        callq   *%r14
        movq    %rax, %rcx
        xorl    %eax, %eax
        testq   %rcx, %rcx
        jne     .LBB1_16
        movq    56(%rsp), %rcx
        movabsq $PyNumber_Long, %rax
        callq   *%rax
        movq    %rax, %rdi
        testq   %rdi, %rdi
        je      .LBB1_8
        movabsq $PyLong_AsLongLong, %rax
        movq    %rdi, %rcx
        callq   *%rax
        movq    %rax, %rsi
        movq    %rdi, %rcx
        callq   *%r15
.LBB1_8:
        callq   *%r14
        movq    %rax, %rcx
        xorl    %eax, %eax
        testq   %rcx, %rcx
        jne     .LBB1_16
        xorl    %ecx, %ecx
        testq   %rsi, %rsi
        cmovsq  %rcx, %rsi
        xorpd   %xmm1, %xmm1
        movl    $255, %eax
        movabsq $.LCPI1_0, %rdx
        xorpd   %xmm0, %xmm0
        .align  16, 0x90
.LBB1_10:
        leaq    (%rsi,%rcx), %rbx
        testq   %rbx, %rbx
        jle     .LBB1_14
        movapd  %xmm1, %xmm2
        mulsd   %xmm2, %xmm2
        mulsd   %xmm0, %xmm1
        mulsd   %xmm0, %xmm0
        subsd   %xmm0, %xmm2
        addsd   %xmm1, %xmm1
        addsd   %xmm6, %xmm2
        movapd  %xmm1, %xmm0
        addsd   %xmm7, %xmm0
        movapd  %xmm2, %xmm1
        mulsd   %xmm2, %xmm2
        movapd  %xmm0, %xmm3
        mulsd   %xmm3, %xmm3
        addsd   %xmm2, %xmm3
        decq    %rcx
        ucomisd (%rdx), %xmm3
        jb      .LBB1_10
        movl    $2147483647, %eax
        subq    %rcx, %rax
        notq    %rcx
        shrq    $32, %rax
        jne     .LBB1_15
        movq    %rcx, %rax
.LBB1_14:
        movabsq $PyInt_FromLong, %rdx
        movl    %eax, %ecx
        callq   *%rdx
        jmp     .LBB1_16
.LBB1_15:
        movabsq $PyLong_FromLongLong, %rax
        callq   *%rax
.LBB1_16:
        movaps  80(%rsp), %xmm6
        movaps  96(%rsp), %xmm7
        addq    $112, %rsp
        popq    %rbx
        popq    %rdi
        popq    %rsi
        popq    %r14
        popq    %r15
        retq
.LBB1_3:
        movabsq $PyExc_RuntimeError, %rcx
        movabsq $".const.missing Environment", %rdx
        movabsq $PyErr_SetString, %rax
        callq   *%rax
        xorl    %eax, %eax
        jmp     .LBB1_16
.LBB1_17:
        movabsq $".const.Fatal error: missing _dynfunc.Closure", %rcx
        movabsq $puts, %rax
        callq   *%rax
        ud2
.Lfunc_end1:
        .size   cpython.__main__.mandel$27.float64.float64.int64, .Lfunc_end1-cpython.__main__.mandel$27.float64.float64.int64
        .cfi_endproc

        .type   .const.mandel,@object
        .section        .rodata,"a",@progbits
.const.mandel:
        .asciz  "mandel"
        .size   .const.mandel, 7

        .type   ".const.Fatal error: missing _dynfunc.Closure",@object
        .align  16
".const.Fatal error: missing _dynfunc.Closure":
        .asciz  "Fatal error: missing _dynfunc.Closure"
        .size   ".const.Fatal error: missing _dynfunc.Closure", 38

        .type   ".const.missing Environment",@object
        .align  16
".const.missing Environment":
        .asciz  "missing Environment"
        .size   ".const.missing Environment", 20


        .section        ".note.GNU-stack","",@progbits
179 Loky9
 
01.11.16
23:07
"а основную реализацию на jvm языках"
Больше неначем...
180 Jija Grenkov
 
02.11.16
00:31
(178) да такой пример и на 1с не сложно llvm байт код интерпретировать. Вот только я не слышал о больших приложениях на этой виртуальной машине.
(179) таковы реалии.
181 Tarzan_Pasha
 
02.11.16
05:57
да не такой уж он популярный. Ну на питоне всякие парсеры пишут, насколько мне известно и некий хакерский софт.
182 DDwe
 
02.11.16
06:20
(181) Паша как всегда всякую хрень пишет.
183 spock
 
02.11.16
06:21
(169) python3 чтоли?
184 Loky9
 
02.11.16
08:04
(180) "Вот только я не слышал о больших приложениях на этой виртуальной машине."
Эпл использует llvm в графической подсистеме макоси. BSD собирается clang. https://wiki.freebsd.org/BuildingFreeBSDWithClang
(183) pypy не выделяет память в такой ситуации.
185 kihor
 
02.11.16
18:44
(0) Не знаю, не знаю насчет этого Питона. Вот перед мной встала задача написать скрипт, который бы парсил неструктурированный Ексель-файл и готовил CSV-файл для загрузки в базу. Решил, что Питон это модно и начал писать на нем. Несколько дней я промучался с кодировками. Все время были какие-то проблемы с преобразованием символов при записи в файл. Плюнул я на это дело и написал скрипт за пару часов на Перле. Признаю, что наверное я просто плохо знаю Питон, но в моем случае это было так. Не понимаю почему Питон так потеснил в популярности Перл. Наверное просто мода такая.
186 kihor
 
02.11.16
18:46
(185)+ Или еще пример. Надо было мне написать скрипт, который бы обращался по https ссылке и при помощи PKCS12 сертификата скачивал бы информацию. Долго читал доки и как я понял Питон не позволяет это делать. На Перл это делается "на ура".
187 Loky9
 
02.11.16
19:12
(185) Регулярно пиходится разбирать питоном xls и xlsx. Не имею никаких проблем. С dbf тоже.
(186) Может быть проблема решается
openssl pkcs12 -in filename.p12 -nokeys -out certificate.pem
openssl pkcs12 -in filename.p12 -nocerts -out privkey.pem
?
188 spleen
 
02.11.16
19:16
1. Порог вхождения низкий.
2. Кроссплатформенный
3. На нем написан популярный web фреймворк Django. Хотя на этом фреймворке вся популярность в web заканчивается.

4. В научной среде много его используют. Есть библиотека NumPy. Часто это не совсем программисты, а ученные которым надо написать не сложные программы по анализу и тд. Тут как раз динамическая типизация большой плюс.

5. Хороший язык для обучения программированию.
6. Опять же, Raspberry pi
7. Много уже готовых написанных библиотек.
8. Хорошее сообщество.
9. Скриптовый язык. В системном администрировании тоже очень популярен. Потому как почти во всех дистрибутивах Linux предустановлен.
189 kihor
 
02.11.16
19:18
(187) Да, решение с openssl я также нашел, но не хотелось заставлять клиентов кроме возни с PKCS12 сертификатом заставлять еще возиться с их преобразованием. Поэтому я решил распространять скрипт на Перле для своего сервиса.
190 Loky9
 
02.11.16
19:26
(189) from OpenSSL import crypto
p12 = crypto.load_pkcs12(file("push.p12", 'rb').read(), [password])

# PEM formatted private key
print crypto.dump_privatekey(crypto.FILETYPE_PEM, p12.get_privatekey())

# PEM formatted certificate
print crypto.dump_certificate(crypto.FILETYPE_PEM, p12.get_certificate())
191 kihor
 
03.11.16
01:13
(190) Спасибо. Я не находил раньше такого.
В целом, единственный случай когда у меня Питон "победил" Перл - это чтение списков Sharepoint. У варианта на Перл были какие-то глюки с авторизацией, а вариант на Питон заработал без проблем.
192 Balabass
 
03.11.16
02:03
Разработка ПО.
Оставлю это здесь: https://www.youtube.com/watch?v=4UhESx6vK4c
193 EvilBeaver
 
09.11.16
11:25
(163) Встроить DLR в 1script я думал, но как-то закопался в документации и исходниках IronPython. Не уверен, что овчинка стоит выделки.
194 Gary417
 
09.11.16
11:26
(188) <Опять же, Raspberry pi >

А что распберри? я на яве для неё пишу
195 EvilBeaver
 
09.11.16
11:28
(140) вот выполнение вашего примера на 1script 1.0.15.

38 секунд. Откуда 3 минуты взялось?

https://s21.postimg.org/lfrm47e1j/2016_11_09_11_26_26.png
196 Rovan
 
гуру
09.11.16
12:46
(0) в Lotus Notes не лучше
метод AddItemValue создает поле в документе
а чтобы получить знание поля надо его найти
GetFirstItem()
Все поля являются сразу массивами.
Нет понятия "тип документа".
Есть просто поле Form, по значению которого система понимает в какой форме его открывать.
197 Кирпич
 
29.11.16
22:51
(195) и правда. может ком чота считал во время теста. ну вот на ноуте старом померил сейчас.
https://postimg.org/image/4i46fnx21/

моё 5 сек
python 24 сек
onescript минута
198 Garykom
 
гуру
29.11.16
23:01
(197) А ты повторно то запусти... причем сразу же после 1-го теста ))
199 Кирпич
 
29.11.16
23:03
(198) да запускал раз пять
200 Кирпич
 
29.11.16
23:06
+(199) может другая версия была. сейчас то последнюю качнул
201 Jump
 
30.11.16
00:42
(197) Ну вроде умный человек, неужто не понимаешь что измерять время выполнения скрипта для сравнения языка не слишком умная затея?
202 Кирпич
 
30.11.16
07:37
(201)да я языки и не сравниваю. Просто попробовал и удивился, что питон так тупанул на ровном месте.
203 NikVars
 
30.11.16
09:56
(202) А чего ты время исполнения разного кода сравниваешь?!
204 Кирпич
 
30.11.16
10:03
(203) и чем он разный?
205 NikVars
 
30.11.16
10:04
(204) Может ты тут запутать всех решил. Глянь свою картинку и увидишь.
206 Кирпич
 
30.11.16
10:07
(205) не вижу
207 Jokero
 
30.11.16
10:13
(0) Он простой, поэтому и популярный. Я вообще Фитон в глаза никогда не видел, зашел в "проект Малмо", почитал их демки на фитоне, все понятно, даже без комментов.
208 NikVars
 
30.11.16
10:18
(206) В цикле что ты суммируешь? Смотри после "+100.".
Попробуй проверить на
Д = Д + синус(Д)/(1+ Логарифм10(Д))
209 Кирпич
 
30.11.16
10:29
(208) сам пробуй. нафиг мне твои логорифмы
210 craxx
 
30.11.16
10:37
(0) интересно, а почему это в разделе "Убийцы 1С"? разве Питон - убийца 1С? по моему даже близко нет.
211 NikVars
 
30.11.16
10:39
(209) Обиделся?! Я ж копался в твоих мудростях... Ты уж напрягись!
212 Кирпич
 
30.11.16
10:44
(211) зачем мне напрягаться? Прибавдять 100.50 или 100.25 как то может повлиять на скорость что-ли?
213 NikVars
 
30.11.16
10:49
(212) Честно?! Не знаю! Но как варианты для проверки: работа от сети, а не от аккума, и что там с антивирусом - тоже отключить.
А раз свелось у нас - делай сам - ибо ты уже сравнил и тебе все ясно - то предлагаю закрыть тему.
214 Мандалай
 
30.11.16
10:53
Заголовок из разряда "Вы перестали пить коньяк по утрам?"
215 Кирпич
 
30.11.16
10:57
(213) Ничо не понял чего там у вас свелось и где. Я просто в (140) по ошибке написал, что onescript выполнял такой код за 2 минуты. Потом признал, что ошибся. Код одинаковый. 100.50 или 100.25 значения не имеет.
216 NikVars
 
30.11.16
10:58
(215) Код разный, это твоя вторая ошибка.
217 Кирпич
 
30.11.16
11:00
(216) ну так напиши, где он разный
218 Кирпич
 
30.11.16
11:01
(216) и про первую ошибку тоже напиши
219 NikVars
 
30.11.16
11:04
(217) Уже написал в (208). Ты говоришь, что одинаковый.
Мне стебануться над тобой?!
220 Кирпич
 
30.11.16
11:09
(219) лучше не стебайся. не умеешь.
221 NikVars
 
30.11.16
11:10
(220) Ок. Не буду.
222 eklmn
 
гуру
30.11.16
12:11
(202) тут не питон тупанул, а проверяльщик ))
range создал тебе объект из 9999999 элементов, а то что в цикле уже не важно

Гвидо сказал бы тебе "use multiprocessing"
223 Кирпич
 
30.11.16
12:15
(222) xrange не намного ускоряет. на секунду может
224 Поросян
 
30.11.16
12:44
Есть тут люди, хорошо разбирающиеся в Питоне?

Скажите как на нем заработать не выходя из дома.
225 Loky9
 
30.11.16
15:18
(224) Кроме как "клепать сайты" вариантов выбора не очень много.
226 Jija Grenkov
 
30.11.16
16:41
(224) На питоне больше зарабатывает data scientist, но питон там вторичен. А сатики клепат ьна питоне последнее дело
227 Tarzan_Pasha
 
30.11.16
16:46
(224)мне кажется парсеры всякие. а не сайты.
228 Loky9
 
30.11.16
16:53
229 Кирпич
 
30.11.16
16:53
(224) разве что книжки про питон писать и продавать :)
Я питоном текстовые файлы генерю. Или какой нибудь микросервис на коленке. Рассылку почты там и сё такое.
Или посчитать чего нибудь. Просто инструмент вспомогательный, короче.
230 Господин ПЖ
 
30.11.16
16:53
под парсеры сейчас вроде go модно
231 Кирпич
 
30.11.16
17:00
(230) если людям отдавать, то Go конечно лучше. а если для себя, то и питон пойдет.
232 Loky9
 
30.11.16
17:02
На питоне лучше всего строчится всё срочное и/или одноразовое.
233 Loky9
 
30.11.16
17:03
... ажильное, можно сказать.
234 Вафель
 
30.11.16
17:05
а питон вс js? кто быстрее?
235 Loky9
 
30.11.16
17:05
(234) на питоне написать быстрее
236 Gary417
 
30.11.16
17:07
(235) букв меньше? :)
237 Loky9
 
30.11.16
17:07
Написал OpenCV счетчик машинок. Работает шустро. Из-за питона? Не думаю.
238 Loky9
 
30.11.16
17:07
(236) Конструкции более ёмкие.
239 craxx
 
30.11.16
17:11
(224) если ты осваиваешь язык программирования чтобы зарабатывать - ничего зарабатывать не получится.
240 Кирпич
 
30.11.16
17:21
(239) И только язык 1с все изучали исключительно для зарабатывания денег.
241 Tarzan_Pasha
 
30.11.16
17:21
(234)конечно Питон.
242 Tarzan_Pasha
 
30.11.16
17:22
(239)не согласен с вами дяденька. Я начал веб изучать ради заработка денег и начал на нем зарабатывать. уж очень 1с надоел.
243 Кирпич
 
30.11.16
17:27
(242) я вообще в программисты пошел потому что в офисе работать тепло, а на улице холодно. вовсе даже не из-за денег.
244 craxx
 
30.11.16
17:35
(240) я ради интереса аж в 2001 году
245 Турист
 
01.12.16
09:35
Хмм, паша уже сам с собой общается ))
246 Shurjk
 
01.12.16
09:48
Очень широкая сфера прикладного применения, много библиотек. Весьма прост, не дает того самого простора мысли что присущ системщикам, на питоне либо что то делается либо объявляется что это невозможно - вообщем то что надо для бизнесса.
247 Loky9
 
01.12.16
12:31
(246) Как будто описание js.
Чего там невозможного, что так сильно ограничивает простор мысли?
248 Кирпич
 
01.12.16
12:38
(247) ну например указатели и с ними миллион способов вызвать загадочный глюк
249 Loky9
 
01.12.16
12:46
(248) С mutables можно наловить всего того же)
250 losky_9
 
01.12.16
13:14
В общем, до понимания работы zip(*[iter(seq)] * n) о простоте/сложности питона говорить рано.
253 ELEA26
 
01.12.16
14:05
(0) рассадник багов. Даже опечатку можно искать долго. Ошибок не видать на 1й, 2й и третий взгляд.
254 bolder
 
01.12.16
14:07
(41) Спасибо,посмеялся!
Какой API у Расходной накладной может быть у 1С, если процедуры даже извлечения и расчета налогов переименовываются и перемещаются по модулям произвольно.
Если бы этого не было и способы 1 и 2 были бы не геморройными.Поэтому наследование в 1С - это из области фантастики.
255 eklmn
 
гуру
01.12.16
14:09
(253) как все печально и с глазами и с руками...
256 Jump
 
03.12.16
02:51
(239) Это почему?
Вот взять тот же JS.
Я его учил чтобы зарабатывать.
Для того чтобы зарабатывать нужно было реализовать некоторый функционал, и это самый удобный для этого язык.
Можно было нанять программиста - но это офигенно дорого в отсутствие четкого ТЗ и четкого понимания нужной функциональности.
А так - выучил, написал прям в процессе обучения, и получаешь деньги.
257 rphosts
 
03.12.16
06:04
(64) docker - это круто, а копипаст одних исходников уже банально
258 Serginio1
 
03.12.16
12:13
(252) Сейчас изучаю Angular 2. Так TypeScript намного приятнее JS. А учитывая мощь ангулара, то TS будет развиваться еще быстрее. Смысл в том, что TS поддерживает старые версии JS. А там смотришь и поддержка браузерами будет TS, учитывая, что WebAssembly буксует. Но и перекомпиляция TS в WA более удобная за счет типизации
259 Мэс33
 
03.12.16
13:14
260 Jija Grenkov
 
04.12.16
04:26
(259) Для девелопера высокого уровня 200к смешные деньги. Как по мне у них ценикс на начинающего синьера
261 Garykom
 
гуру
04.12.16
05:40
(259) BDSM: business, development, sales and marketing

Но реально читаешь что пишет "рекрутчик" и да вроде все понятно, но на каком же языке она мысленно думает?
Уж явно не на русском ибо "Методологии различаются между продуктовыми командами" ))
262 Garykom
 
гуру
04.12.16
05:51
(260) Для "девелопера высокого уровня" деньги довольно часто уже не на 1-м месте.
Важнее комфортная работа над интересными (бросающими вызов самолюбию) задачами/проектами.

Комфортная это значит тебя не залюбливают совещаниями и тимбилдингами, минимум ненужной/пустой работы (только когда сам хочешь отвлечься) и четкое разделение обязанностей.
Если я разработчик то плиз все баги/жалобы/фидбеки от пользователей хочу иметь уже в письменном структирированном/сводном виде. А если приходится общаться вместо поддержки то это конечно без проблем, но за отдельную плату и понимая что процесс разработки будет страдать.
263 Garykom
 
гуру
04.12.16
05:58
(262) *структурированном
264 Мэс33
 
04.12.16
09:38
(260) нормальные деньги.