• Про стартапы и идеи

    Це не ідея. Це формулювання проблеми.
    Формулювання проблеми хороше і напрямок виглядає перспективним.
    Але ідеї (унікального шляху розв’язку задачі, якого раніше ніхто не придумав) тут нема.
    Зробити «як oDesk» — це є шлях, але він чужий. Навіть якщо він спрацює, то інші можуть це легко скопіювати.
    Крім того не факт, що спрацює. Я не сильно з ним знайомий, але в міру мого розуміння — все-таки oDesk зроблений для ІТ. Там наприклад можна покласти результат виконання замовлення (сорци) на сайті і звернутися в арбітраж.
    У випадку ремонту квартир це працювати не буде.
    Можна звичайно видумувати якісь аналогічні процедури у фізичному світі, але наскільки добре це спрацює, невідомо. Тому в даному випадку закінченої ідеї нема, хоча я б сказав, що половина ідеї тут вже є :)

  • Ребята, ну когда уже вы сделаете нормальный форум?

    “ipb или примитивнейший phpbb был бы в разы лучше того велосипеда, что есть сейчас”

    Як на мене, цей форум набагато кращий ніж phpBB

  • Сайт розробників


    Если говорить как есть, то developers.org.ua один из худших по дизайну и сервису ресурс который мне приходилось видеть.
    а як на мій погляд — один з кращих

    контент хороший і читати зручно

  • “питончег” — improve yourself

    Не вернут, посмотрите как работает hibernate criteria, он сгенерирует limit или его аналог.

    Мені трохи проблематично подивитись, я з hibernate не працюю.
    Але якщо б хтось тут запостив аналогодного рядка коду на Пітоні, який я привів, то було б цікаво глянути.
    Я розумію, що досягнути того самого результату можна на буль-якій мові.

    Питання в зручності.

  • “питончег” — improve yourself

    Про LINQ — я з ним не знайомий, але виглядає так, що то в будь-якому разі гірший варіант.
    Навіть якщо там є співмірні можливості, то треба прийняти до уваги, що ця технологія
    1. Платна

    2. Не крос-платформна

  • “питончег” — improve yourself

    Ну так это возможно сделать на всех оо языках, даже на С++.

    Цікаво як?
    І до чого тут оо?
    Більшість мов, на етапі filter () вернуть з бази повний список даних.

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

  • “питончег” — improve yourself

    той приклад був не про SQL, а про передачу параметрів функції у вигляді об’єкта/списку.

    Я мав на увазі, що в пітонівському прикладі
    res=orders.filter (order_date=today (), customer_office_address__like= «Шевченка» ) [: 3]
    не тільки параметри функції можуть оброблятися, але і слайс після її виклику ([: 3])

    І замість того, щоб витягувати весь список, а потім відбирати три перших елементи, пітонівський код може вияснити, що елементи після 3 не будуть використовуватися, і додати «limit 3» до SQL.

  • “питончег” — improve yourself

    В JavaScript наприклад теж часто так роблять:

    Так, в Джаваскріпт це непогано виглядає, але слайс наскільки я зрозумів, він обробити не може.
    Тобто в SQL не буде додано «limit 3»

    Все одно — як на мене, Пітонівський синтаксис трохи зручніший.

  • “питончег” — improve yourself


    с «питонскимих» курсов\тренигов точнее

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

    Я не дуже спеціаліст по Пітону:)
    Так — використовую для своїх задач.
    З того що я читав, найкраще для початку напевно — книжка Guido van Rossum.
    В мене вона друкована (рос. переклад), але напевно десь є в інеті.

    Взагалі в інеті багато док, є декілька хороших конспектів, але їх напевно треба читати після книжки.

  • “питончег” — improve yourself

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

    Можна конкретний приклад?

    І взагалі — мова йшла про можливості інтроспекції.

  • “питончег” — improve yourself


    Приведите пример, а то у меня в голове сразу несколько идей о том что вы хотели сказать.
    Наприклад в мене є таблиця orders і мені треба вибрати звідти перших три замовлення за сьогодні по адресах, котрі починаються із стрічки «Шевченка».
    На Пітоні це можна зробити якось так:
    res=orders.filter (order_date=today (), customer_office_address__like= «Шевченка» ) [: 3]
    Тобто функція filter розглядає назви параметрів і розуміє, що саме треба відібрати.
    Потім враховується інформація про те, що з результуючого списку я буду відбирати тільки перших 3 записи.
    На цьому етапі генерується SQL, щось типу
    select * from orders join offices where order_date=20100805 and address like «Шевченка%» limit 3
    і йде на виконнання в сервер бази.

    Цікаво чи таке можна зробити на Джаві і як воно буде виглядати.

    І ще — можна приклад, як на джаві продиференціювати аналітично функцію, задану в коді?
    Я не могу привести этот пример, о чем это говорит?
    Напевно про те, що це зробити непросто:)

    Якщо взагалі можливо після JIT компіляції.

  • “питончег” — improve yourself

    Опять мелочитесь, лучше тысячу, нет 10, 000, одна священная строка на питоне может заменить годичный труд 100-а джаверов...

    :)
    Треба напевно уточнити — я не агітую писати на Пітоні все що завгодно.
    І статична типізація дійсно має свої переваги:)
    І є фреймворки/бібліотеки, які підходять для певних задач.
    Я і сам би напевно не писав дуже великий проект на Пітоні.
    Але є проекти, де він зручний.

    Я наприклад різні утіліти сам для себе пишу майже виключно на Пітоні.

  • “питончег” — improve yourself


    В більшості випадків таку помилку можна спокійно обробити в рантаймі і ніяких принципових проблем з цим нема.
    Что значит обработать? Программа ведь работать не будет?

    Якщо є можливість сконвертувати в щось підходяще, то буде.

    Какой то человек положит в параметр не того типа, где то выскочит эксепшн, и человеку выдадут ошибку: типа прийдите позже?
    Бажано щоб ця помилка виникла ще в девелопера, ну в крайньому разі — в QA.
    Якщо вони розробляють так, що віддають замовнику код, який самі толком не запускали, то навряд чи і статична типізація їм поможе.

    Хоча в принципі звичайно статична типізація має свої переваги, але не треба з неї робити культ:)

    А от необхідність мати 20 функцій типу display_int, dislay_string, dsplay_complex, display_real і т.д., замість одної реально збільшує і код і затрати на розробку.
    А необходимости нету, можно написать просто display (Object o) например на джава.
    А далі що?

    В рантаймі обробити неправильні параметри?

    Опять мимо, и в Java и в С# есть интроспекция.
    Про інтроспекцію — в Пітоні можна в функцію передати довільну кількість будь-яких параметрів.
    І в рантаймі взнати їх імена, значення і прийняти рішення, що з ними робити.
    А в Джаві так можна?

    І ще — можна приклад, як на джаві продиференціювати аналітично функцію, задану в коді?

  • “питончег” — improve yourself


    Я працював в конторі, де повний чекаут коду був більший ніж гігабайт. Більшість — на Пітоні.

    Чисто личный интерес, не относящийся к теме: Можете поподробнее рассказать?

    Особливо детальніше мабуть не можу:)
    В двох словах — велика контора, девелоперів близько сотні.
    Основна тема — складний аналіз неструктурованих даних (тексти, зображення і т.п.)
    Багато проектів, в основному працюють на стороні замовників.
    Деякі проекти внутрішні, зокрема веб-інтерфейси до всяких систем обробки даних.
    Тобто гігабайт коду — це умовно кажучи, 30 проектів по 10 Мбайт при умові що кожен проект існує у вигляді декількох окремих версій (продуктів)

    В основному код на Пітоні. Треба врахувати що 1К на Пітоні це десь 5К на С.

  • “питончег” — improve yourself


    Тогда такой вопрос:
    Человек придумал суперэффективный алгоритм, реализовал его на медленном окружении (один из недостатков питона) и отдает его в продакшэн?
    Так.
    В більшості випадків швидкості вистачає.
    Якщо в продакшені швидкість виявиться недостатньою, то запускається на кластері.
    Якщо це не допоможе, то переписується на С.
    І взагалі — не треба абсолютизувати проблему швидкодії.

    Багато задач на Пітоні йдуть з такою ж швидкістю як на С.

    Или отдает его другим людям которые “просто переписывают его на C” (не обязательно C, на языке с более быстрым окружением) или сам реализовывает на этом языке.
    Буває і так і так.

    Але якщо реалізував сам, то потім код передається девелоперам, вони його переглядають, якщо хочуть — переписують і далі вони за нього відповідають.

    Несомненно, у питона есть своя ниша, но на мой взгляд — это в основном fun (небольшое сайтики, админские скрипты, сборка проектов).

    Я працював в конторі, де повний чекаут коду був більший ніж гігабайт. Більшість — на Пітоні.

    Что касается прикладных программ с которыми я сталкивался, например Exaile, то они могут иметь хороший функционал, но при этом безбожно тормозят и глючат, на чуть более чем стандартных данных.
    Я тут подумав — я сам якось програмами на Пітоні взагалі не користуюся:)
    Щось їх дійсно мало на десктопах. Напевно мова нова і занадто відкрита як для комерційних вендорів.
    Хоча веб-сайти на Пітоні є. Там все одно до коду не доступишся.

    Але сам для себе я написав багато всяких програм і вони для мене дуже корисні.

    Реальная задача: Каталог, в нем 30−31 файл по 5−8 Гиг каждый, вычленить все эксепшены.
    Для питона, в котором нет многопоточности, это нормальная задача?
    Я не дуже зрозумів суть задачі, але в мене були наприклад задачі типу 4 файли по 30 Гігабайт.
    Запускав як правило на ніч на одному блейді — 4 процеси.
    Відпрацьовує як правило за 1−3 години, але то залежить від задачі.
    Швидкість роботи як правило не принципово відрізняється від С.
    Багатопоточність в Пітоні ніби є, але не дуже добра, я нею не користувався.
    Як на мене, краще запустити декілька процесів.
    Зокрема це єдиний спосіб розпаралелити роботу на кластері.
    Треди ж працюють тільки в границях конкретного блейда.
    А в мене були кластери по 20 блейдів.

    І пам’ять тредів обмежена.

    Можно ли скрипт запустить на продакшен сервере или придется копировать в другое место и там анализировать?
    В мене були окремі кластери для досліджень.
    Але в разі потреба запускав і на продакшені.
    nice 10

    І ніяких проблем:)

  • “питончег” — improve yourself


    Максимальный размер файла в ext4 16Тбайт (если я все правильно помню). Задача:
    розпарсати текстовий файл і порахувати, скільки раз яке слово зустрілося в файлі розміром 16Тбайт.
    Якщо це була іронія, то я її не зрозумів.
    Я займався подібними (тільки значно складнішими) задачами на Пітоні.
    Розміри датасетів були близько 10 ТБ.
    Правда це був NFS, а не ext4.

    Я не спеціаліст в файлових системах, але в міру мого розуміння, реалізувати 10 ТБ на ext4 практично не можливо.

  • “питончег” — improve yourself


    математики — это математики, а программисты — это программисты
    Це дещо застаріле бачення питання.
    Це колись математичний алгоритм розроблявся на папері, а потім реалізовувався в коді.

    Зараз багато задач на папері вже не розв’язуються взагалі.

    Как должно выглядеть решение такой задачи:
    1) Физик (если я правильно помню, что такое уравнение Шредингера), или сам или с помощью математика, написать алгоритм решения и передать его программисту

    Власне є такі випадки, де “написати алгоритм” — це 99% роботи.

    2) Программист должен запрограммировать этот алгоритм, так что бы тот выполнялся как можно быстрее и потреблял минимум ресурсов и отдать программу физику или математику.
    Власне цей етап не завжди потрібний.

    А поділ на математиків і програмістів не завжди актуальний.

    Все же давайте не отклонятся от темы. Все примеры которые вы привели, сводятся к созданию прототипов “на коленках”, а не к промышленным решениям.
    Не треба недооцінювати прототипи.
    Інколи отримати прототип — це 99% роботи.

    Звичайно є також інші типи задач.

    Сформулирую вопрос так:
    За какое время написана математиком функция решения уравнений Шредингера вычислит 1К уравнений? Быстрее чем функция написанная программистом на C?
    В багатьох випадках швидкість ролі не грає (коли вона і так достатня).

    Є також випадки, де розв’язок не потрібно повторювати 1000 раз.

    Где вероятность ошибки больше: когда код пишет не профессиональный программист (математик), или когда код пишет профессиональный программист по алгоритму составленному профессиональным математиком (или спецом в данной области), или составленному с его слов.
    Складно сказати в загальному. Є різні випадки.
    До речі — таке враження, що у Вас трохи спрощене уявлення про розробку таких речей.
    Приблизно як про рішення диф.рівняння методом Рунге-Кутти.
    Тобто берем підручник, читаєм правильний алгоритм і кодаєм.
    Це звичайно існує, але то є певний вид проектів.
    В реальних комерційних розробках нових алгоритмів все значно складніше.

    Часто там нема “правильного” алгоритму взагалі.

  • “питончег” — improve yourself


    sage-4.5.1.tar meta 294.10 MB
    И это, я так понял, базовая инсталляция сорсы базовой инсталляции.
    Ну Sage — це монстр:)
    Таке враження, що там зібрали все, що людство змогло придумати в математиці:)

    Є простіші речі, наприклад SymPy, як вже написав crypto5.

    медленные реализации, отсюда и возможные доп затраты на железо;
    Проблема має місце і носить до певної міри принциповий характер.
    Через динамічну типізацію швидкість буде відносно повільна при будь-якій реалізації.
    Але мій особистий досвід такий:
    1. Для задач, які не описуються поінтерами, швидкодія Пітона приблизно така ж, як С.
    Найпростіший приклад — розпарсати текстовий файл і порахувати, скільки раз яке слово зустрілося.
    2. Затрати на залізо набагато менші, ніж виграш від швидкості розробки.
    3. Більшість задач мають достатню швидкість. Тобто якщо навіть переписати на С і пришвидшити в 10−100 раз, практично це нічого не дасть, або навіть буде взагалі непомітно для користувача.

    4. Вузькі місця можна виділити в окрему програму, або написати С-шну бібліотеку і підлінкувати в Пітон.

    * динамическая типизация усложняет его использование на больших и долгоживущих проектах, хотя для стартапов, наверно, нормально;
    Так, є різні типи проектів, для деяких напевно не підходить.

    Але я бачив великі проекти на Пітоні.

    * неопределенность с поддержкой, версия 3 вроде как заморожена и далеко не факт, что не придется переписывать код при переходе с 2 на 3.
    Я не відслідковую це детально, але наскільки я знаю 3.0 розроблялася для того щоб додати всі нові фічі (вже закінчена), а 3.1 — переписування деяких повільних фіч на С, для збільшення швидкості. Ніяких проблем з їх розробкою нема, наскільки я знаю.
    Принципово 2.х і 3.х мають однакові можливості.
    Різниця тільки в деталях синтаксису. Тому переходити, чи ні — це справа особистого смаку. Ніякої спішки з цим нема. Я сидів на 2.4 десь 3 роки після того, як він перестав девелопатися. Потім перейшов на 2.6.5 за 1 день без ніяких проблем.
    Між 2.х і 3.х в основному 2 зміни — оператор print замінили на функцію, тобто треба буде пододавати дужки всюди де він використовувався.
    Стрічка по-замовчуванню в 3.х буде Юнікодівська, а 2.х була 8-бітна.
    Це звичайно буде вимагати детального перегляду коду для тих задач, де була інтернаціоналізація.
    Але в мене наприклад завдяки динамічній типізації подібні речі фіксаються на ходу без видимих проблем.
    Є автоматичний конвертор сорців (я не пробував)

    Так що ті, що писали математику, обробку даних і т.п. (без інтернаціоналізації) можуть взагалі нічого не помітити:)

  • “питончег” — improve yourself

    Вы не поверите, у кучи народу. Для бизнеса Matlab интересен как раз тем что он платный!

    Я ж не заперечую, що є люди, для яких Матлаб підходить краще.

    Я просто пояснюю, що є інші, для яких він не підходить.

    Зачем математику сорци либ, я не понимаю.

    Наведу приклад.
    Ні одна комерційна ліба (наскільки я знаю), не здатна аналітично проінтегрувати рівняння Шредінгера для кулонівського потенціалу.
    Отже якщо є бажання це пофіксати, то єдиний вихід — брати сорци і доробляти.

    Або писати з нуля, якщо конкретна мова програмування не має таких ліб взагалі.

  • “питончег” — improve yourself


    Ну например возможность задать метод принимающий только список чисел, что бы никакая индюшка туда не положила строку, и мы не словили runtime ошибку.
    Спірний аргумент.
    В більшості випадків таку помилку можна спокійно обробити в рантаймі і ніяких принципових проблем з цим нема.
    А от необхідність мати 20 функцій типу display_int, dislay_string, dsplay_complex, display_real і т.д., замість одної реально збільшує і код і затрати на розробку.
    Крім того є серйозніші проблеми.
    Наприклад в Пітоні, якщо в мене є функція, яка описана і використовується в програмі, то я можу наприклад її аналітично продиференціювати без проблем (код доступний по інтроспекції)
    А на мовах статичної типізації мені треба буде ще раз описати її як стрічку, розпарсати в рантаймі і тільки тоді я зможу продиференціювати (якщо ще в мене буде ліба, яка це може зробити)
    Це не просто купа лишньої роботи, але і принципове погіршення архітектури програми (одна функція дублюється в двох місцях — при її зміні треба не тільки робити подвійну роботу, але ще і можна зробити помилку, задавши функцію по-різному, а знайти цю помилку може бути непросто)

    Та й взагалі слабо собі уявляю, як в статичній мові цю продиференційовану функцію в рантаймі злінкувати із змінними. Там напевно роботи буде в 100 раз більше ніж на Пітоні.

← Сtrl 12345 Ctrl →