LINUX.ORG.RU

Python или PHP как первый язык…

 ,


0

1

Прежде стоит сказать, что я никогда не был связан с программированием: в школе ничего не проходили и с ВУЗом тоже не повезло. Однако, сдаваться же никто не собирается!

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

В бой.

Сейчас мы с ним активно ищем качественный материал для самостоятельного углубленного изучения. Во времени не ограничены никак. Да вообще никак и ничем, что касаемо интернет-материала: нужно заплатить — заплатим, есть что-нибудь толковое в паблике — с удовольствием изучим. А мы уверены, что много чего есть.

Недавно, максимально насколько это было возможно изучили разметку HTML 4.01 и CSS 2.1 согласно спецификациям «W3C» и, сейчас продолжаем HTML5/CSS3. Эта часть, безусловно, никаких трудностей не доставляет ни в теории ни в практике; чего там, собственно, трудного, всё легко и понятно. //Отдельное спасибо за курсы от «Специалиста» людям, которые не хоронят их у себя на компьютере.

Далее.

В выборе серверного языка мы не сошлись взглядами: я за изучение Python и, конечно же, последующее освоение Django; приятель на стороне PHP. Наши позиции не могут быть сколь угодно объективными по ряду обстоятельных причин, поэтому не разумно ограничить себя двумя мнениями.

Итак, о проекте.

Проект социальный. Множество взаимодействий с (дальше пока густой лес), социальный граф, логика как у существующих соц. сетей. Идея абсолютно другая: не третий фейсбук и не десятый контакт. Идея имеет самодостаточную роль в жизни, а потому не высосана из пальца, лишь бы что-нибудь сделать. Полагаю, что свеохнагрузки приходятся не на ЯП, а на БД. Полагаю, что правильная архитектура — залог успеха. И, полагаю, что можно обойтись языком, который всё же больше нравится. Но не исключаю, что есть более компетентные люди, которые развеют мои предположения.

Что изучать тем, кто только пришел в программирование: Python (Django) или PHP (скорее всего Yii)? Или?

Извиняюсь за то, что случайно попал не в нужный раздел — исправлюсь.



Последнее исправление: NiceForce (всего исправлений: 3)

Ответ на: комментарий от anonymous

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

с этим сложно спорить. Однако, косяки и фэйлы пхп хорошо известны и документированы. Если ты будешь писать говнокод на руби, ты даже никогда и не узнаешь, что это говнокод, и ЧТДНТ. Наоборот, будешь восхищаться. Как восхищаются ламеры, авторы однострока на хаскеле, который якобы реализует qsort (а на самом деле тупит хуже пузырька на bash). И вот это — проблема ЯП, а точнее его илитарности.

drBatty ★★
()
Ответ на: комментарий от dizza

На яве гораздо сложнее писать говнокод и его реально меньше.

Давай пруфы. С цифрами, с чартами.

Че, уже сказать нечего, пошел словесный понос?

Нет. Я задал конкретный вопрос: зачем тебе питон, если есть ява? Зачем, объясни. В чем ява слаба, что ты ее не осилил до конца?

gh0stwizard ★★★★★
()
Ответ на: комментарий от gh0stwizard

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

dizza ★★★★★
()
Ответ на: комментарий от dizza

Наговнокодить проЭкт пойдет.

Ты уходишь от ответа. Причем криво так. Знаешь какое мнение ты о себе составляешь?

Вобщем, чтобы ты знал правильный ответ на этот вопрос - не все легко писать в ООП. Все просто.

gh0stwizard ★★★★★
()
Ответ на: комментарий от Virtuos86

В Питоне возвращают -1:

дык это тоже не хорошо, ибо FALSE === НЕЧИСЛО. А вот -1 == число. Проблема пхп только в том, что он НЕЧИСЛО без вопросов переводит в число, когда надо и когда не надо.

drBatty ★★
()
Ответ на: комментарий от gh0stwizard

Давай пруфы. С цифрами, с чартами.

А это не тру подход. Чистая эмпирика удел быдла. Тут априорно понятно что к чему.

зачем тебе питон, если есть ява? Зачем, объясни. В чем ява слаба, что ты ее не осилил до конца?

Ну вот ты и палишся. В твоей картине мира главное «осилить». То есть как не подходяще не было бы, но надо бы осилить. Яву я осилил. Просто каждой задаче свой инструмент.

dizza ★★★★★
()
Ответ на: комментарий от dizza

Для PHP нужны специальные «осиляторы» с повышенным уровнем дисциплины, которые могут скомпенсировать грязность языка.

s/PHP/любой ЯП/

На яве гораздо сложнее писать говнокод и его реально меньше.

на яве и просто код написать сложно. Helloworld на яве в разы сложнее его же на пхп.

drBatty ★★
()
Ответ на: комментарий от gh0stwizard

А знаешь какое ты мнение составляешь, додумывальшик ты наш? Где я писал, что все легко в ООП писать? Ты это говоришь человеку, который постоянно использует процедурный, функциональный и объектные подходы.

dizza ★★★★★
()
Ответ на: комментарий от drBatty

Как восхищаются ламеры, авторы однострока на хаскеле, который якобы реализует qsort (а на самом деле тупит хуже пузырька на bash)

Ну формально он таки qsort. Там проблема в памяти(из-за немутабельности списков) и в том, что опорным элементом выбирается первый, а это ухудшает вероятность даже средней сложности быстрой сортировки - O(N log(N)) и приближает нас к O(N^2). Можно написать и обычный qsort на массивах, но это ад.

anonymous
()
Ответ на: комментарий от gh0stwizard

Свои сервера нужно иметь, нищеброд.

anonymous
()
Ответ на: комментарий от dizza

Ты это говоришь человеку, который постоянно использует процедурный, функциональный и объектные подходы.

Лолкс. Не забудь еще отсюда взять новые слова: http://ru.wikipedia.org/wiki/Категория:Парадигмы_программирования

gh0stwizard ★★★★★
()
Ответ на: комментарий от anonymous

Зачем мириться, если можно забить на PHP и воспользоваться приличным языком?

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

Ну так nullable же.

ну дык нет же… И это не баг а фича. Система типов в PHP итак сложна и противоречива, одних «нулей» около дюжины, а ты ещё nullable хочешь втиснуть.

drBatty ★★
()
Ответ на: комментарий от gh0stwizard

А что, разве это он слажал с исключениями в конструкторе? Ты отвечать за свои слова не будешь?

anonymous
()
Ответ на: комментарий от anonymous

А что, разве это он слажал с исключениями в конструкторе? Ты отвечать за свои слова не будешь?

Я дал линк тут: Python или PHP как первый язык… (комментарий)

И зарегься наконец, чето ты как не человек.

gh0stwizard ★★★★★
()
Ответ на: комментарий от gh0stwizard

На яве гораздо сложнее писать говнокод и его реально меньше.

Давай пруфы.

сравни

import java.util.*;
public class Sample {
    public static void main(String[] args) {
        // Создание объекта по шаблону.
        List<String> strings = new LinkedList<String>();
        strings.add("Hello");
        strings.add("world");
        strings.add("!");
        for (String s : strings) {
            System.out.print(s);
            System.out.print(" ");
        }
    }
}
$a[] = "Hello";
$a[] = "world";
$a[] = "!";
foreach($a as $s)
    echo $s ." ";

так понятно?

drBatty ★★
()
Ответ на: комментарий от gh0stwizard

И зарегься наконец, чето ты как не человек.

Лениво.

anonymous
()
Ответ на: комментарий от drBatty

так понятно?

Что ты наезжаешь на меня-то? :) И что ты такой код в продакшене используешь?

Проблема некачественного кода вообще не зависит от кол-ва строк. Это только в статистике удобно сравнить 1000 строк на асме против 1000 на яве.

Проблема в голове, а не яп.

gh0stwizard ★★★★★
()
Ответ на: комментарий от anonymous

Ну формально он таки qsort. Там проблема в памяти(из-за немутабельности списков) и в том, что опорным элементом выбирается первый, а это ухудшает вероятность даже средней сложности быстрой сортировки - O(N log(N)) и приближает нас к O(N^2). Можно написать и обычный qsort на массивах, но это ад.

вот именно, ад. И хрен поймёшь, по сравнению с аналогом на сишечке.

ЗЫЖ Кнут доказал, что медиана на асимптотическую сложность не влияет.

drBatty ★★
()
Ответ на: комментарий от anonymous

ну вот а что это даёт например лично для меня?

drBatty ★★
()
Ответ на: комментарий от gh0stwizard

И что ты такой код в продакшене используешь?

а что не так с кодом? Нормальный код ИМХО.

Проблема некачественного кода вообще не зависит от кол-ва строк.

зависит. Чем больше строк, тем хуже код. Правда к java vs php это слабо относится, просто области применения слишком разные. Php именно что для хэлловорлдов годен.

Проблема в голове, а не яп.

проблема в адекватности ЯП для задачи. Серебряной пули ещё не придумали.

drBatty ★★
()
Ответ на: комментарий от drBatty

ЗЫЖ Кнут доказал, что медиана на асимптотическую сложность не влияет.

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

anonymous
()
Ответ на: комментарий от drBatty

Если ты будешь писать говнокод на руби, ты даже никогда и не узнаешь, что это говнокод, и ЧТДНТ.

Как это понимать? Если язык не низкоуровневый, то на нем можно писать только говнокод? Или речь о косяках в реализациях, коих я не заметил?

iVS ★★★★★
()
Ответ на: комментарий от drBatty

Увы, в питоне странноватый подход: False и True - это значения класса bool (то есть это что-то вроде перечисления), который в свою очередь наследует от числового типа целых int. Так что это числа, 0 и 1 соответственно.

По сути это чистой воды соглашение: в арифметических операциях их можно использовать как обычные числа (более того, до третьего питона это просто переменные, то есть можно написать «True = []», например; в третьем эти имена внесли в кейворды), а при логических операциях True/False используются (для чего и выделены как сущность) для обозначения булевых истины/лжи.

Так что -1 — это как раз выход. ГВР писал, что взял из Си некоторые непротиворечивые вещи, это одна из них, надо полагать.

Virtuos86 ★★★★★
()
Ответ на: комментарий от gh0stwizard

Я задал конкретный вопрос: зачем тебе питон, если есть ява?

Зачем кресло, если есть табуретка?

iVS ★★★★★
()
Ответ на: комментарий от anonymous

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

не так. Отсортированный список не имеет отношения к асимптоте. Это специальный случай. Кнут доказал, что при _любом_ выборе медианы можно подсунуть такие данные, что будет O(N²).

drBatty ★★
()
Ответ на: комментарий от iVS

Если ты будешь писать говнокод на руби, ты даже никогда и не узнаешь, что это говнокод, и ЧТДНТ.

Как это понимать?

просто тут phpшников Over9000, а вот рубистов 3.5. И я больше чем уверен, что средняя квалификация и тех и других одинаковая. Т.е. найти грамотного пхпшника реально, а вот рубиста — вряд-ли.

Я, что-то вообще уже с год не видел здесь кода на руби.

drBatty ★★
()
Ответ на: комментарий от anonymous

У тебя с английским плохо? Там нет ничего из того, о чем ты говорил.

Нет с английским как раз все отлично. Вобщем про то, что я говорил есть только здесь (на деле из известной книги):

http://habrahabr.ru/post/132500/

(Создание объектов)

Вот тут тоже неплохой пример: http://www.ibm.com/developerworks/rational/library/05/0816_GuptaPalanki/

gh0stwizard ★★★★★
()
Ответ на: комментарий от Virtuos86

Увы, в питоне странноватый подход: False и True - это значения класса bool (то есть это что-то вроде перечисления), который в свою очередь наследует от числового типа целых int. Так что это числа, 0 и 1 соответственно.

ну а в PHP это совершенно отдельный самостоятельный тип, который к int имеет отношения не больше, чем к array.

Так что -1 — это как раз выход. ГВР писал, что взял из Си некоторые непротиворечивые вещи, это одна из них, надо полагать.

я-бы так не сказал, ибо ты сам говорил, что -1 допустимый индекс. А вот FALSE из php индексом никак быть не может, и сможет только после преобразования.

drBatty ★★
()
Ответ на: комментарий от iVS

По каким причинам игнорируется Ruby?

Я не игнорю. Тут наезд на пхп только.

gh0stwizard ★★★★★
()
Ответ на: комментарий от Virtuos86

Так что -1 — это как раз выход.

И в чем разница между if (f() < 0) {} else {} vs. if (f()) {} else {} ?

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

gh0stwizard ★★★★★
()
Ответ на: комментарий от drBatty

По ссылке мой опыт, и большинство пхп проектов похожи на тот с которым я столкнулся в тот раз. Где там 4.2?

pi11 ★★★★★
()
Ответ на: комментарий от dizza

Эскалирование с технического уровня, на огранизационный.

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

pi11 ★★★★★
()
Ответ на: комментарий от pi11

По ссылке мой опыт, и большинство пхп проектов похожи на тот с которым я столкнулся в тот раз. Где там 4.2?

4.2 потому, что это никакого отношения к php НЕ имеет. Уж поверь, писали-бы они на перле, было-бы в разы хуже.

drBatty ★★
()
Ответ на: комментарий от iVS

ну я и не спорил, так везде можно. Речь не о простоте php, а о замороченности жабы.

drBatty ★★
()
Ответ на: комментарий от drBatty

Имеет, потому что пхп подталкивает к такому стилю. Перл в этом плане тоже говно.

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

pi11 ★★★★★
()
Ответ на: комментарий от pi11

Перл в этом плане тоже говно.

В каком месте? Мне лично не понятна такая оценка. Тогда давай припишем сюда и всех остальных: sh, js, tcl, lua, python, ruby. Надо писать либо на яве, либо плюсах, в крайнем случае на си или асме.

gh0stwizard ★★★★★
()
Ответ на: комментарий от NiceForce

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

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

linuxnewb
()
Ответ на: комментарий от pi11

Имеет, потому что пхп подталкивает к такому стилю. Перл в этом плане тоже говно.

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

но мне лично не хочется напрягаться, т.к. есть хорошие альтернативы.

спорно.

drBatty ★★
()
Ответ на: комментарий от drBatty

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

>>> help("".find)

Help on built-in function find:

find(...)
    S.find(sub[, start[, end]]) -> int
    
    Return the lowest index in S where substring sub is found,
    such that sub is contained within S[start:end].  Optional
    arguments start and end are interpreted as in slice notation.
    
    Return -1 on failure.
(END)

Это соглашение такое. Индексы всегда будут >= 0, если подстрока будет найдена. А вместо -1 в таком случае может быть в принципе любое отрицательное число (но тут небольшая хитрость есть: питон кэширует определенный интервал целых чисел, которые часто используются в операциях, чтобы не создавать на каждый чих новый объект-число; -1 входит в этот интервал). И зачем тут какой-то специальный тип? Хочешь получить индекс, получаешь индекс, не забывай только границу проверить.

А вообще отрицательные индексы, конечно, легальны. Я другое имел в виду, когда про них заикался.

Virtuos86 ★★★★★
()

Полагаю, что свеохнагрузки приходятся не на ЯП, а на БД.

Меня всегда веселило это в неосиляторах - ничего не знаю, а уже знаю какая где будет нагрузка.

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

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

Архитектура не бывает правильной, то что написано в учебниках - это не «правильная» архитектура, а архитектура для дешевой замены рабсилы.

Залог успеха( в смысле качества кода) - это: а) реализация и всегда реализация; б) Архитектура, но эта архитектура брезгает универсальностью и не брезгает сложностью.

Залог успеха( в смысле выгодного кода) - это: а) Как можно больше готового кода( если это веб-говно, то изимодная масштабируемость с кдп больше 1% - твоё всё) и минимум ответственности; б) Таже архитектура, только она брезгает сложность, не брезнает универсальностью и должна быть лёгкой. Это тебе даёт минимальные затраты на запил и минимальные затраты на обучение нового тела( уровень которого может быть реально на дне). Дешевая замена и дешевое содержание рабов - залог успеха.

Чё учить? Для развития в сторону полезности - сишка, если «теорицизм"говоного мозга, то езатерика.

superhackkiller1997
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.