- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
fputs(fopen("ttext.txt", "w+"),"Мега текст!"); # создание файла и запись
fpassthru(fopen("ttext.txt", "w+")); # отображение
copy("ttext.txt", "ttext2.txt"); # копирование
fputs(fopen("ttext2.txt", "w+"), "скопированный Мега текст"); # запись
rename("ttext2.txt", "dctext.txt"); # переименование
fpassthru(fopen("dctext.txt", "w+")); # отображение
unlink("dctext.txt"); # удаление
fclose(fopen("ttext.txt", "w+")); # закрытие
telnet 29.06.2010 19:44 # +5
This is obvious 29.06.2010 19:47 # +4
Denis Popov 29.06.2010 19:48 # +3
telnet 29.06.2010 19:52 # +2
Denis Popov 29.06.2010 20:00 # +1
This is obvious 29.06.2010 20:59 # +1
Lure Of Chaos 29.06.2010 20:07 # +1
This is obvious 29.06.2010 20:55 # 0
Lure Of Chaos 29.06.2010 21:07 # 0
This is obvious 29.06.2010 21:48 # 0
Анонимус 30.06.2010 01:21 # 0
вообще изначально 90% функций PHP было обертками вокруг Cных функций с такими же названиями
cfdev 30.06.2010 04:16 # 0
вообще изначально 90% функций PHP было обертками вокруг Cных функций с такими же названиями
почему тогда просто не использовать си?
Lure Of Chaos 30.06.2010 12:36 # 0
cfdev 30.06.2010 13:37 # 0
Управление памятью - есть Boehm GC.
Анонимус 30.06.2010 14:03 # 0
cfdev 30.06.2010 14:44 # 0
Это верно и для Java, которая считается for brain-damaged people не меньше php (в своей нише). Ничего, научиваются.
Анонимус 30.06.2010 14:50 # 0
это не правда:)
В мире java есть разные люди: есть и вполне себе нормальные. В мире PHP таких нет.
Большинству PHP разработчиков до сих пор не очевидно зачем нужны юнит-тесты, почему не нужно выводить ошибки в браузер, а из всех паттернов они с трудом назовут синглтон:)
Я это уже проходил.
Кроме того пишущие на java хотя бы имеют представление о том, что такое куча и стек, и даже (бывает так) запускают йоркит, и смотрят -- кто загадил кучу.
В PHP же обычно о таких вещах не задумывються
cfdev 30.06.2010 15:00 # +2
>это не правда:)
Мопед не мой.
> В мире java есть разные люди: есть и вполне себе нормальные. В мире PHP таких нет.
Да что хоть. Везде примерно одинаковые соотношения.
> Кроме того пишущие на java хотя бы имеют представление о том, что такое куча и стек
С чего бы им знать что такое стек? В яве знание того, где хранятся объекты (в отличие, например, от C# с его struct'ами) не обязательно с точки зрения языка.
Традиция обсуждать такие моменты как куча, как мне кажется, шло/идёт с инициативы самого Sun'а. А так, простому ява-разрабу до лампочки это (никто его не принуждает понимать устройство, как напр. в си)... Как мне кажется, всё дело не в особенности ява-кодеров, а в разных политиках Sun и авторов PHP. (всё равно, знание того, что такое стек, не превращает говнокодера в хорошего программиста волшебным образом)
Анонимус 30.06.2010 15:11 # 0
)))Вы возьмите какой-нибудь хорошо известный проект на PHP, и загляните внутрь. PHPBB например или PHPMyAdmin. Или drupal или jumla. И сравните, например, с magnolia cms на java.
Сразу и поймете в чем разница.
>>С чего бы им знать что такое стек? В яве знание того, где хранятся объекты (в отличие, например, от C# с его struct'ами) не обязательно с точки зрения языка.
Подобные вещи описываются в туториалах сана, и являются обязательными для scjp.
Возьмите любого джависта, который работает на джаве хотя бы год -- и спросите:)
>>А так, простому ява-разрабу до лампочки это
Без этих понятий -- здравствуй мемори лик.
Можно много еще привести примеров того, что у джавистов принято знать: java memory model например.
>> Как мне кажется, всё дело не в особенности ява-кодеров, а в разных политиках Sun и авторов PHP.
Вернее в отсутствии политики у PHP вообще. В отсутствии идеологии, код-стайла, JSR и прочего: потому язык похож на кучу мусора.
Вообще о чем мы говорим, если в PHP есть register_globals и magic_quotes? :))
cfdev 30.06.2010 15:22 # 0
Анонимус 01.07.2010 01:29 # 0
Точными цифрами не обладаю. Во всяком случае я догадываюсь, где могут работать хорошие джависты (яндекс, джетбрейнс итд), а где могут работать PHPшники -- я не знаю.
А с мемори ликами вообще ситуация особая: так как PHP приложение начинается и заканчивается сразу же (в случае CGI) или довольно быстро (в случае модуля апача), то о мемори ликах "можно" не думать, а еще можно "забывать" закрывать файлы и коннекты к базам данных, что успешно делают многие PHPшники.
Очевидно что в мире сервлетов такая штука не прокатит.
А логи? log4j мастхев в у любого явиста, а много Вы видели PHP приложений с логами?
И кстати. Понимание стека и кучи важно так же и потому, что в жабе вполне себе есть примитивы, и в отличии от упомянутого Вами C# они автоматом не боксились до недавнего времени, так что понимание это все таки основопологающее. Хотя обратной стороной является ужасающая концепция врапперов, но тут уже ничего не поделаешь:)
Остается добавить к этому невнятный, кривой API PHP, частично объектный, частично процедурный, использование ассоциативных массивов вместо структур и/или объектов, и всякие плюшки о которых я уже говорил(регистер глобал, вывод ошибок в браузер, мэджик квотес) и становится понятно что джава все таки помогает учиться программированию, а PHP мешает)))
cfdev 01.07.2010 01:39 # +1
И нормально так:
cfdev 30.06.2010 15:30 # +1
Т.е., и там итам соотношения одинаковые плюс минус статистич. погрешность. Как мне кажется.
guest8 02.09.2019 15:32 # −999
CBO6OgHblu_nemyx 04.09.2019 12:56 # 0
Анонимус 30.06.2010 13:08 # +1
telnet 30.06.2010 13:25 # +1
Смысл аналогии ясен, надеюсь.
cfdev 30.06.2010 13:35 # 0
telnet 30.06.2010 15:15 # +1
cfdev 01.07.2010 10:50 # 0
Если юзать только стандартные либы - то сложно. Если заюзать некий фреймворк, который бы мимикрировал классы жабы иль дотнета (что-то наподобие glib/gobject'а), то - проще некуда. А так разница только в синтаксисе...
telnet 01.07.2010 18:31 # 0
А вообще было бы любопытно изучить вопрос о том, нет ли уже такого готового фреймворка. Я, признаться, как-то не интересовался.
telnet 01.07.2010 18:41 # +1
If C++ would have been used instead of PHP, then 22,500 servers could be powered down (assuming a conservative ratio of 10 for the efficiency of C++ versus PHP code), or a reduction of 49,000 tons of CO2 per year. (это про Facebook)
Sure C++ would be faster running but not necessarily more efficient in terms of dollars (из обсуждения оттуда же)
Lure Of Chaos 01.07.2010 19:38 # −1
cfdev 01.07.2010 23:36 # +1
Lure Of Chaos 02.07.2010 10:55 # 0
cfdev 02.07.2010 13:27 # 0
И не забываем, что для си есть тоже сборщик мусора (куда более sophisticated, чем в говнореализации пхп).
Lure Of Chaos 02.07.2010 14:06 # 0
cfdev 02.07.2010 14:11 # 0
Lure Of Chaos 02.07.2010 16:27 # −1
cfdev 02.07.2010 16:29 # 0
в указателях ничего сложного нет, если не использовать арифметику (сложенние, вычитание) и какие-то аццкие хаки.
а так, нужно просто взять себе за правило, что у выделяемых на куче объектов после типа нужно ставить звёздочку - и, в принципе, всё )
в сишарпе есть ref -- передача по ссылке -- и это второе применение указателей в си (в стандартных функциях, например). как то же его освоили обезьянки-сишарписты.
Lure Of Chaos 02.07.2010 16:42 # 0
Говногость 02.07.2010 17:50 # 0
Их, вроде, нельзя использовать без unsafe?
В любом случае оно там не нужно. Разве что для портирования сишного кода как-то использовал...
cfdev 02.07.2010 23:54 # 0
Это просто ключевое слово + ключ компилятору.
На уровне же рантайма указатели - полноправный элемент
cfdev 03.07.2010 00:05 # 0
Ну да, оно полезно в основном только для общения с сишным кодом (и то редко).
Хотя указатели в C# в некоторых местах быстрее стандартных средств. Ядровая библиотека (mscorlib) много где их использует, например очень много в реализации класса String.
Говногость 02.07.2010 17:47 # 0
cfdev 02.07.2010 23:58 # 0
Вкратце: оно останавливает потоки и сканирует кучу, стек и регистры на значения, которые "похожи на указатели". Поэтому у сишного коллектора два минуса 1) Если на стеке/в куче лежит число, похожее на указатель, то реальный объект не сможет удалться 2) дефрагментация, потому что теоретически нельзя компактировать кучу :(
А так если код не говнокод и не имеет хаки, то Boehm GC способен работать с любым уже написанным си-приложением, нужно только заменить malloc на gc_malloc
cfdev 01.07.2010 23:42 # 0
Я в свободное время ваяю велосипед по типу gobject, но с оглядкой на mono/java :\
Само использование такого псевдообъектного кода не сложное (синтаксис раздутее, может быть, в 1.3-1.5 раз), сложно то, что легко юзеркоду ошибиться, ибо язык не строгий...
guest8 02.09.2019 15:30 # −999
guest8 02.09.2019 17:26 # −999
CBO6OgHblu_nemyx 02.09.2019 18:27 # 0
guest8 02.09.2019 18:34 # −999
guest8 02.09.2019 18:37 # −999
guest8 02.09.2019 18:38 # −999
guest8 02.09.2019 18:37 # −999
cmepmop 03.09.2019 09:40 # 0
CBO6OgHblu_nemyx 04.09.2019 12:57 # 0
cmepmop 04.09.2019 21:17 # 0
inkanus_gray 04.09.2019 21:30 # −90
Анонимус 29.06.2010 20:58 # +2
Lure Of Chaos 29.06.2010 21:07 # 0
IIIyqpymuHckuu_nemyx 04.09.2019 21:48 # 0
Goh 04.09.2019 22:15 # −102
guest8 04.09.2019 22:19 # −999
Анонимус 29.06.2010 20:59 # 0
Dreyk 30.06.2010 00:12 # 0
Lure Of Chaos 30.06.2010 09:19 # 0
This is obvious 30.06.2010 10:01 # 0
guest8 09.04.2019 18:19 # −999
guest8 09.04.2019 18:19 # −999
Pretty_Young_Thing 02.09.2019 04:58 # 0
О, синь.
guest8 02.09.2019 10:21 # −999
CBO6OgHblu_nemyx 02.09.2019 11:39 # 0
CBO6OgHblu_nemyx 02.09.2019 15:21 # 0
guest8 02.09.2019 15:28 # −999
guest8 02.09.2019 15:29 # −999
Stallman 04.09.2019 22:36 # 0
Файлом посру
CBO6OgHblu_nemyx 05.09.2019 14:55 # 0