Sep 24

khim
Ruby, Python, PHP - хороши для прототипирования (где главное преимущество, отсутствуюшее в C++ - это возможность запустить новую версию без перекомпиляции), а если нужно делать что-то реально большое - то тут их достоинства резко превращаются в недостатки (если количество исходников в системе меряется миллионами строк, то отлавливание проблем на этапе компиляции куда полезнее возможности гибко манипулировать строением программы “в полёте”).

FX Poster
По порядку:

  1. ООП в PHP нормальный - прям как в Java. Для динамического языка он, ИМХО, не сильно подходит.
  2. В Python/Ruby нормально юзаются private/public. Проблем с “гарантиями” не замечено.
  3. Да, конечно. На Rails/Django/Zope пишут только проекты для себя. :)
  4. Если вы пишите на C++/Java, то почему так защищаете PHP. Поверьте, его есть кому защищать - на нем ишут намного больше людей, чем на Python + Ruby.
  5. Ruby, Python, и в том числе PHP - хороши для тех ситуаций, когда ОГРОМНАЯ производительность не нужна и вполне достаточна производительность в 5-10 (может больше) меньшая, чем в C++.
  6. Большая часть проблем обнаруживается как раз на этапе выполнения.

PS. А что делать в C++ с ошибками в template’ах? ;)

meniam
По поводу PS, а шаблоны разве обязательно компилить ? ;)

FX Poster
Похоже, что такое C++ Templates вы не знаете.

meniam
Если честно - нет, не сталкивался.
Но грызет меня сомнение, что все-таки MVC в какой то степени присутствует. Парсинг файла (по аналогии как Smarty в php) - задача все таки выполнимая.

Может я чего-то и не понимаю, но как может программист пытаться меня подкалывать, даже не погуглив относительно темы разговора?!?!?!

Видать высказывание о том, что на PHP пишут все, даже домохозяйки - правда. Они почитали какие-то статейки по PHP, повыучивали модные аббревиатуры типа MVC и вперед, спорить с другими, нифига не шарящими “программистами”!

PS. Может я переборщил, но меня этот разговор взбесил…

written by fxposter \\ tags: ,

Aug 28

Какие языки сейчас используются в веб-программировании? Навскидку я могу составить такой список: C#, Java EE, Python, Ruby, PHP, Perl. JavaScript брать в расчет не буду - сейчас я хочу поговорить именно о server-side языках.

C# - первая версия этого языка появилась в 2000 году, для веба стал использоваться с приходом ASP.NET, который вышел в 2002м году.

Java EE -  первая версия, которая называлась J2EE и имела версию 1.2, вышла в далеком1991м году. Следующая версия 1.3 была выпущена аж через 11 лет. Сейчас новые версии выпускаются гораздо чаще. Используется в основном для разработки веб-сервисов. По крайней мере я не встречал мелкие или небольшие компании, которые писали бы “просто сайты” на Java EE.

Python - на самом деле достаточно древний язык. Первая версия языка была выпущена в 1990м году. Когда его начали достаточно сильно использовать в веб-приложениях сказать трудно. Можно считать, что в интернет он вошел с появлением таких легких и быстрых фреймворков, как Django/Turbogears и т.д. В таком случае получается что в инете он с 2004-2005-го года. На самом деле все было несколько раньше, но приход в интернет в то время был не совсем очевиден. Фреймворк Zope, который был изначально нацелен на интернет, был выпущен в 1995-1997 годах. Точнее на данный момент сказать не могу. Но еще раз повторюсь - это не было массовым явлением.

Ruby - разработан в 1995м году. В интернете стал использоваться с появлением, ясное дело, Ruby On Rails, который вышел в 2004-м году.

PHP - эдакий старичок программирования сайтов. Первая версия, которая называлась PHP/FI вышла в 1994м. А тот PHP, который мы знаем появился в 1997м году с выходом PHP3 и именно с этого момента он начал набирать популярность как язык для веб-разработки.

Perl - вышел в 1987м году, а вот когда появился в вебе - для меня остается тайной. Я этот язык особо никогда не любил и уж тем более никогда не использовал. Пользуются ли им еще в вебе - пользуются, но, как мне кажется, популярность этого языка неуклонно падает.

Теперь, собственно, к чему я вел это все. Выводы по Perl’у я делать не могу, а вот по всем остальным языкам получается интересная картина. C#/Python/Ruby - заявили массово о себе совсем недавно, причем их массовое распространение связанно с написанными для них фреймворками (ASP.NET/Django и компания/ROR). Java - в вебе используется только Java EE, и, хоть и появилась она давно, сейчас явно не собирается скидывать обороты. PHP - язычок, который пришел в веб сам, для которого до недавнего времени и фреймворков то не было, а те что были - их не использовали.

Я веду к тому, что все современные языки в вебе используют фреймворки, причем используют чуть ли не в обязательном порядке (да, вы можете на руби писать веб приложение, не используя рельсы, но никто этого при здравом уме делать не будет). А вот писать приложение на PHP не используя никаких уже созданных компонент - вполне обычное дело. И народ наоборот не хочет использовать фреймворки аргументируя это тем, что они “слишком сложные”, “тормозные” и т.д.  И очень большая часть сайтов делается потом непонятно как… посмотришь код - убиться хочется.  такое впечатление, что фраза “PHP портит нормальных программистов” - это не бред, а самая настоящая реальность.

В итоге (все ИМХО):

  1. смысла использовать PHP, если есть возможность использовать что-то более современное, - НЕТ
  2. если уж использовать PHP, то с умом - не писать все сначала, а выбрать удобные компоненты для разработки нужного вам веб приложения

Из PHP Framework’ов я бы посоветовал выбрать Zend Framework, как наиболее конфигурируемый и обьектно-ориентированный. Для себя я выбрал именно его. Но в нем есть одно “но” - если вы в качестве wrapper’а для DB собираетесь использовать зендовские классы - вам возможно прийдется сменить хостера, так как нужна будет поддержка PDO/PDO_MySQL/PDO_PgSQL, которая, как мне кажется, не у всех хостеров есть.
PS. Лично мне сейчас нравится:

  • для веб-разработки для себя - Python, для заказов - PHP + Zend_Framework
  • для desktop-gui-приложений - C#
  • для консольных - C++

PPS. Пару часов назад гуглил украинских хостеров. Завтра буду узнавать - есть ли у них поддержка PHP >= 5.1.3 и PDO_MySQL (требования к Zend Framework’у). Посмотрим, какие результаты это даст. Кто знает хороших укр. хостеров - отписывайтесь, составлю табличку - кто и что поддерживает.

written by fxposter \\ tags: , , , , , , , , , , ,

Jun 19

Сегодня у нас на повестке дня два линка:

  1. Перевод черновика стандарта C++09 на русский язык. Для тех, кто не в курсе - в C++09 - новый стандарт языка C++, который будет выпущен в 2009-м году (логично, не правда ли :)), стандарт определяет саму структуру языка + его стандартную библиотеку (STL).
  2. Пример использования Zend_Translate под звучным названием “Build Multi-lingual Websites With the Zend Framework”. Я пока что не дочитал, но просмотрел. На первый взгляд - ни о каком “build websites” речи не идет, просто показывается, как юзать Zend_Translate, но может кому-то будет полезно.

PS. Я уже дома. turboNOMAD, давай линк.

written by fxposter \\ tags: ,

Jun 07

Последняя лабораторная, которую я делал достаточно долго и до сих пор не уверен в 100%-й правильности ее работы, потому прошу всех протестировать эту лабу.

Как я раньше писал, по Компьютерным Информационным Технологиям у нас 3 лабораторные работы + экзамен, но те, кто сделал эти 3 работы раньше чем нужно, могут попросить препода дать им 4-ую лабу, сделав которую можно не идти на экзамен. Моя 4-ая лаба - реализация одного из алгоритмов поиска всех вхождений подстроки в строке, а именно - реализация алгоритма Бойера-Мура (Boyer-Moore). В этом алгоритме поиск в лучшем случае (при удачной реализации) выполняется за сублинейное время (т.е., за O(k*n), где k = const, k < 1). Проблема реализации заключалась в том, что:

  • алгоритм нам объясняли с использованием строк с символами [1...n] (т.е. первый символ строки находится на [1]-й позиции), а мне пришлось делать с обычными c’шными строками [0...n-1]; на первый взгляд кажется - ну и в чем тут проблема… проблема в сложности алгоритма… его и просто по книжке нелегко реализовать, а тут еще и добавляются всякие проблемы - там единицу не добавил, там - не отнял и т.д.
  • алгоритм нам объяснили не полностью, а где-то на 2/3… оставшуюся часть пришлось выводить самому… над алгоритмом, который в итоге был реализован функцией в 20 строчек, я сидел часа 4… вроде заработало…
  • ну и все остальное по мелочи :)

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

Файлы: source (string.h + string.cpp).

written by fxposter \\ tags: , ,

Jun 06

Последняя лабораторная по “Архитектуре ЭВМ” - это был отжиг. Один из преподов (которому мы эту работу должны были сдать) долго болел и на наших занятих был всего пару раз. После того, как он “отболел”, он появился у нас на уроке, начал наезжать, что мы всей группой нифига не сдаем (офигенно просто, особенно если учитывать, что сдавать некому было), пугал тем, что нас расформируют как группу и все мы перейдем под его кураторство (он куратор в параллельной группе).

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

Сейчас он немного успокоился и без проблем принимает лабораторные на WinAPI (которого, как мне показалось, он вообще не знает).

Так как выбор был небольшой (особо парится не хотелось) - сделал программу для “работы” с клавиатурой. Смотрите сами. :) В файлах - класс работы с клавиатурой (обертка для некоторых функций из WinAPI), builder’овский проект (мне влом разбираться, что здесь нужно, а что нет - выкладываю весь проект, ну и exe’шник.

Файлы: source (keyboard.h), source (builder project), exe.

PS. Ближе к вечеру сегодня появится еще одна лаба. :) 

written by fxposter \\ tags: , , ,

Jun 06

После долгого отдыха от универа (как-то странно получилось, я на полтора месяца забил на домашние задания), возвращаюсь к программированию. Последняя лабораторная работа по “Абстрактным Типам Данных” (предмет на самом деле называется не так, но по сути на нем преподают как раз АТД) - класс графа.

Описание и вся документация по графу - в исходниках. Если нужно - могу выложить HTML’ные странички, сгенерированные cpp-doc’ом, хотя вы и сами можете сделать их. ;)

Так как это лаба модульная (к ней нужно делать отчет и прочее) - пришлось соорудить на скорую руку простенький GUI (делал в Borland C++ Builder), показывающий некоторые возможности графа. Его исходники я не выкладываю, они вряд ли будут кому-то интересны.

Файлы: source, gui (exe).

written by fxposter \\ tags: , ,

May 30

Такс… Много чего обещал. Буду исправлятся.

Планы на эту и следующую неделю таковы:

  1. CSS, если найду дизайнера
  2. C++
    1. Класс графа (если честно, сделанный так сяк, сил уже нет моих лабы делать)
    2. Класс-обертка для работы клавиатурой
    3. Поиск подстроки в строке за сублинейное время - поглядим, как получится

Отложенные:

  1. PHP
    1. Zend Framework ModelDb-класс, боюсь просто не осилю продолжение
    2. Краткий обзор CodeIgniter, тоже будет, но не в ближайшие 2 недели

Пока что все. Что будет дальше - как жизнь покажет.

written by fxposter \\ tags: , , , ,

Apr 13

Еще две лабораторные работы: бинарное дерево поиска и хеш таблица (хеш-таблица еще не документирована).

Исходники и примеры работы с классами - далее по тексту.

Continue reading »

written by fxposter \\ tags: , , ,

Mar 02

На сайте Microsoft появилась (а может и была, я не знаю) довольно интересная страничка. Рассказывается о разработке программ для винды и для веба с помощью технологий, предоставляемых самой MS, а именно ASP.NET для веба и VB, C# для винды. Сражу предупреждаю - там почти все предлагается в виде дидеороликов видеороликов, так что перед этим запаситесь приличным количеством траффика. :) Я сам еще не смотрел (а может и не буду), но пробежался. Вердикт - зайти стоит. В особенности программистам :)

written by fxposter \\ tags: , , ,

Feb 21

Посетила меня такая мысля - раз уж мне нужен RSS Reader, то почему не сделать его самому. Сначала идея была заброшена в самую жопу дальнюю извилину моего мозга, но потом сформировался неплохой план: есть у нас предмет один, “учебная практика” называется, нам по нему задали сделать 1 задание на пол семестра, задание выбираешь сам (цитата препода: “Далайте то, что бы вы могли показать будущим заказчикам”). Но препод вынуждает хочет, чтобы мы писали игру, причем сетевую. Игру я писать не хочу (не мое это :( ), а вот поуговаривать препода разрешить мне написать RSS ридер, ИМХО, неплохая идея. Сегодня будут ленты у него - попробую договориться.

Помощь приветствуется, т.к. хочется все-таки сделать качественный продукт. Если кто шарит C++ - пишите сюда, или сразу мне в аську. Знание каких-нибудь кросс-платформенных GUI (типа Qt) приветствуется!

PS. Проектировщик нужен обязательно, т.к. я думаю, что не справлюсь с этим (все же проектирование у меня хромает).

written by fxposter \\ tags: , , ,