Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Религиозные войны > Помогите определиться


Автор: SoWa 6.2.2005, 17:50
Я уже 4 года пишу на Дельфи, программы неплохие получаются, НО куда ни посмотри: нужны программисты на PHP, Java, Perl, C++, а что требуются программисты на Дельфи мало вижу!!! smile
И вот разочаровываюсь: может изучать PHP или C++?
Помогите определиться: КАКОЙ ЯЗЫК БОЛЬШЕ ВОСТРЕБОВАН И ПОЛЕЗЕН

Автор: Pakshin A. S. 6.2.2005, 19:32
Учи си!!! А пхп можно ммоходом подучить, говорят он легкий. Тем более основы программирования знаешь, поэтому легко будет! smile Удачи! smile

Автор: z-END 6.2.2005, 19:36
Учи все!!! знания лишними никогда не бывают.
Если серьезно то учи связку Delphi (C++) + PHP (Perl) т.е. софт и веб-софт когда знаешь и то и то жизнь становится намного легче smile

Автор: Dmitry V.Abramov 7.2.2005, 05:08
Для раздвижки горизонтов - Perl. Апосля этого кошмара уже ничто не страшно будет. PHP получится само собой, ибо он есть попытка упростить Perl.

Автор: ProgrammistDelphi 7.2.2005, 06:35
Sowa ты знаешь пиши на чем тебе нравиться, где ты ас. Язык Delphi настолько большой и мощный, и я не думаю, что что-то можно зделать на С++, чего нельзя зделать на Delphi

Автор: Domestic Cat 7.2.2005, 06:52
C++, Java, и .NET (C#) - если не для веба конечно.

Автор: chipset 7.2.2005, 07:16
.NET можно и для веба в определенном смысле smile

Автор: Domestic Cat 7.2.2005, 07:23
Да все там для веба, но небольшие сайты все ж на этом не пишут smile

Автор: chipset 7.2.2005, 07:31
Но согласись что на нём легче писать для веба чем с помощью PHP клиентские прилаги ;)

Автор: Domestic Cat 7.2.2005, 07:34
Ну дык у пхп предназначение такое.

Автор: Конструктор 7.2.2005, 10:07
А Java чтоль уже не для WEB? smile .NET по идее и был придуман как симметричный ответ Sun-у smile

Автор: Domestic Cat 7.2.2005, 10:41
А ты топик внимательно читал?

Автор: Конструктор 7.2.2005, 11:59
Вроде да smile

Цитата(Domestic @ 7.2.2005, 07:52)
C++, Java, и .NET (C#) - если не для веба конечно.


Автор: Sun 7.2.2005, 12:03
Цитата(ProgrammistDelphi @ 7.2.2005, 03:35)
Sowa ты знаешь пиши на чем тебе нравиться, где ты ас. Язык Delphi настолько большой и мощный, и я не думаю, что что-то можно зделать на С++, чего нельзя зделать на Delphi

В C/C++ легче работать с памятью. Все-таки Delphi не дает такой свободы. Еще один минус у Delphi - он популярен на территории СНГ, но на Западе не так широко используется. Гораздо больше предложений существует для того же Visual Basic, чем для Delphi.

И еще один минус - у Delphi синтаксис Pascal, который есть только у Паскаля. Если брать языки С++, PHP, Perl, Java, C# - у них у всех С-подобный синтаксис. То-есть зная С, тебе будет легче выучить любой из этих языков, чем зная Delphi.

Судя по всему сейчас наиболее перспективное направление это - C#. Спрос сейчас очень большой и специалист на C# без работы не останется.

Автор: <Spawn> 9.2.2005, 19:55
Цитата
В C/C++ легче работать с памятью. Все-таки Delphi не дает такой свободы.

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

Автор: chipset 10.2.2005, 03:11
<Spawn>, дельфи не востребован на рынке труда. Вот и всё.

Автор: Domestic Cat 10.2.2005, 04:47
Цитата(chipset @ 9.2.2005, 18:11)
<Spawn>, дельфи не востребован на рынке труда. Вот и всё.


угу. здесь особенно.

Автор: Конструктор 10.2.2005, 10:27
Цитата
Приведи, пожалуйста пример, что бы понять выгоду работы с памятью в Си.


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

Автор: ~FoX~ 10.2.2005, 11:31
Цитата(chipset @ 10.2.2005, 03:11)
<Spawn>, дельфи не востребован на рынке труда. Вот и всё.

Не совсем так, делфи востребован, но из личного опыта знаю, что Сишный программист получает 1,5-2 раза больше чем делфячий. Даже если проекты написаны за одни и тоже время и полностью соответствуют ТЗ, то предпочтение отдают Сишному. Просто бытует мнение, что сишники более профессианальны.

Автор: <Spawn> 10.2.2005, 12:21
Цитата
Цитата
Приведи, пожалуйста пример, что бы понять выгоду работы с памятью в Си.


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

И в чем же эта выгода? Что это

Код

char *c;
...<че та делаем с указателем>
c[n-ый байт] = 'a';



что это:

Код

var
 c: PChar;
begin
...<че та делаем с указателем>
 PChar(c + n-ый байт)^ := 'a';
end;


физически выполняют одно и то же действие. И я не вижу тут особенной прогрессивности Сишного кода, что бы сказать Дельфи МастДай и пересесть за один Сиsmile

Цитата
дельфи не востребован на рынке труда. Вот и всё.

Где я спрашивал про уровень востребованности языков программирования? Все что мне было нужно это примеры работы с памятью, которые по словам автора, позволяют
Цитата
легче работать с памятью. Все-таки Delphi не дает такой свободы
. Покажите мне такую возможность, которую я не смогу реализовать в Дельфи.

А про востребованность Дельфи вот что могу сказать - в банке, в котором я работаю, есть программеры Дельфи(это не яsmile - я там работаю прогером Oracle:) ), то есть востребованность все таки естьsmile

Цитата
Просто бытует мнение, что сишники более профессианальны.
Абсолютная глупость.smile Все это скорее всего завязано на том, что в Дельфи абсолютный новичок может на базе готовых компонентов состряпать незамысловатое приложение. Но ты попытайся там писать на уровне создания классов и своих компонентов и, я думаю тебе это не покажется легчем чем в Си.

P.S. Я не хочу сказать, что Дельфи лучший язык - все зависит от конкретной задачи. Вообще в последнее время я так или иначе спорикасался с 7 языками программирования и не скажу, что могу выделить из них лучший - все зависит, как я уже сказал, от конкретной задачи.

Автор: bel_nikita 10.2.2005, 13:06
Однозначно: C++, Java, C# + .NET
Именно в таком порядке. Будешь знать C++, перейти на Java и C# не составит большого труда.
Цитата
И в чем же эта выгода? Что это
Код
char *c;
...<че та делаем с указателем>
c[n-ый байт] = 'a';
что это:
Код
var
c: PChar;
begin
...<че та делаем с указателем>
PChar(c + n-ый байт)^ := 'a';
end;

Очевидно, что первый код выглядит понятнее smile

Автор: chipset 10.2.2005, 16:24
Уга-га! Ещё один сторонник Сей нашёлся! smile

Автор: GoodBoy 10.2.2005, 16:33
Цитата(bel_nikita @ 10.2.2005, 13:06)
Очевидно, что первый код выглядит понятнее

Типа поспорить ради того, чтобы поспорить??? smile

Я тоже не сталкивался пока с задачей, которую невозможно было бы реализовать средствами Дельфи и требовалось бы непременное использование С++...

Автор: Sun 10.2.2005, 17:32
<Spawn>, в C/С++ есть операторы * и & для работы с указателями и ссылками, которые я могу применять абсолютно ко всем объектам языка, начиная от переменных и заканчивая функциями. Указатель я могу преобразовать к любому типу данных.

В Delphi есть операторы ^ и @, для типизированых указателей. Это значит что если у меня указатель на Integer, то я могу его использовать только для операций с целым типом. Это усложняет многие бинарные операции. Конечно все можно обойти, но будет выглядеть это сложнее чем в С
Цитата

FILE* f = fopen("data.bin", "r");
char data[100];
fread(data,  1, 100, f);
struct SOME_STRUCT1 s1;
int n = sizeof(s1);
memcpy(&s1, data, n);
struct SOME_STRUCT2 s2;
memcpy(&s2, &data[n], sizeof(s2));
...

Еще добавлю что в Паскале до 4 Дельфи отсутствовали динамические массивы, что превращало работу с массивами в тихий ужас. Но слава богу они включили функцию SetLength для установки длины массива "на лету".

Автор: <Spawn> 10.2.2005, 20:01
Цитата
Указатель я могу преобразовать к любому типу данных.
В Дельфе это тоже возможноsmile
Указатель на функцию:

Код

type
 TFuncPtr = function;


Твой код на Дельфи:

Код

type
 TStruct1 = record
   SomeField: Integer;
 end;
 TStruct2 = record
   SomeField: Double;
 end;
var
 data: array[0..99] of Char;
 n: integer;
 s1: TStruct1;
 s2: TStruct2;
begin
 with TFileStream.Create('data.bin', fmOpenRead) do
 try
   Read(data, 100);
   n := SizeOf(TStruct1);
   Move(Pointer(@data)^, s1, n);
   Move(Pointer(DWORD(@data) + n)^, s2, SizeOf(s2));
 finally
   Free;
 end;
end;


Да операции с указателями несколько больше по части преобразования типов, но это не особенно мне осложняет работуsmile

Или даже можно так:

Код

   CopyMemory(@s1, @data, n);
   CopyMemory(@s2, Pointer(DWORD(@data) + n), SizeOf(s2));

Автор: Dmitry V.Abramov 11.2.2005, 06:12
Цитата
Цитата
Цитата
Приведи, пожалуйста пример, что бы понять выгоду работы с памятью в Си.


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

И в чем же эта выгода? Что это

Код

char *c;
...<че та делаем с указателем>
c[n-ый байт] = 'a';



что это:

Код

var
 c: PChar;
begin
...<че та делаем с указателем>
 PChar(c + n-ый байт)^ := 'a';
end;

Если c: PChar, то еще проще:
Код

var
 c: PChar;
begin
...<че та делаем с указателем>
 c[n-ый байт] := 'a';
end;

Автор: Sun 11.2.2005, 14:15
Цитата
Pointer(DWORD(@data) + n)^
smile А как быть с 16-разрядной и 64 разрядной адресацией?

Автор: Дрон 12.2.2005, 16:50
А есть ли в дельфи такая штука как union? smile
Когда одно и то же место в памяти можно трактовать по разному... Позволяет много хитростей делать.

Хотя, конечно, и без неё можно жить, зато как красиво получается:
Код
union Color
{
   DWORD Value;
   struct
   {
         BYTE Red;
         BYTE Green;
         BYTE Blue;
         BYTE Alpha;
   };
};

Автор: <Spawn> 12.2.2005, 18:22
Дрон

Есть тут такое:) Называется, вроде, вариантные записи. Вот пример стандартной заиси-аналога union для Variant типа данных:

Код

 TVarData = packed record
   case Integer of
     0: (VType: TVarType;
         case Integer of
           0: (Reserved1: Word;
               case Integer of
                 0: (Reserved2, Reserved3: Word;
                     case Integer of
                       varSmallInt: (VSmallInt: SmallInt);
                       varInteger:  (VInteger: Integer);
                       varSingle:   (VSingle: Single);
                       varDouble:   (VDouble: Double);
                       varCurrency: (VCurrency: Currency);
                       varDate:     (VDate: TDateTime);
                       varOleStr:   (VOleStr: PWideChar);
                       varDispatch: (VDispatch: Pointer);
                       varError:    (VError: HRESULT);
                       varBoolean:  (VBoolean: WordBool);
                       varUnknown:  (VUnknown: Pointer);
                       varShortInt: (VShortInt: ShortInt);
                       varByte:     (VByte: Byte);
                       varWord:     (VWord: Word);
                       varLongWord: (VLongWord: LongWord);
                       varInt64:    (VInt64: Int64);
                       varString:   (VString: Pointer);
                       varAny:      (VAny: Pointer);
                       varArray:    (VArray: PVarArray);
                       varByRef:    (VPointer: Pointer);
                    );
                 1: (VLongs: array[0..2] of LongInt);
              );
           2: (VWords: array [0..6] of Word);
           3: (VBytes: array [0..13] of Byte);
         );
     1: (RawData: array [0..3] of LongInt);
 end;


Вот аналог сишного кода:

Код

 TMyColor = packed record
   case Integer of
     0: (Color: DWORD);
     1: (Red: Byte;
         Green: Byte;
         Blue: Byte;
         Alpha: Byte)
 end;


P.S.

Можно даже так извратиться smile :

Код

type
 TRGB = packed record
   Red: Byte;
   Green: Byte;
   Blue: Byte;
   Alpha: Byte;
 end;
var
 Color: DWORD;
 RGB: TRGB absolute Color;

Автор: S.A.P. 12.2.2005, 18:52
<Spawn> нука примерчик перегрузки операторов в Дельфе! smile . То то же smile .

А шаблоны (templates)?

ЗЫ: сейчас Стауструпа открою smile .

Автор: <Spawn> 12.2.2005, 18:55
Цитата(Sun @ 11.2.2005, 16:15)
Цитата
Pointer(DWORD(@data) + n)^
smile А как быть с 16-разрядной и 64 разрядной адресацией?

Или так:

Код

Pointer(DWORD(@data) + n * SizeOf(<Тип данных>))^

smile

или так:

Код

Inc(<Указатель на какой то тип данных>, index);
<Указатель на какой то тип данных>^ := <Значение>;

Добавлено @ 18:58
Perchilla С Дельфи 8 перезагрузка поддерживается, но я ей еще не пользовался - только читал инфу. Так же, если я правильно помню, имитация перезагрузки операторов есть в классах для работы с вариантрами типами, но ими я тоже не пользовался(В книге Архангельского, вроде был пример на эту тему)
Добавлено @ 19:02
Шаблонов, к сожалению, нету smile

Автор: Oracle 12.2.2005, 19:06
Учи Oracle smile

P.S то, что Oracle это не язык, я знаю smile

Автор: S.A.P. 12.2.2005, 19:09
Цитата
С Дельфи 8 перезагрузка поддерживается, но я ей еще не пользовался - только читал инфу.
поверим на слово smile .

Цитата
Шаблонов, к сожалению, нету
вот. А как же STL подобные структуры? В Дельфе нету?

Еще хочу сказать, что неудобно в Дельфи тем, что в какой - нибудь процедуре нельзя содавать переменные на лету, все приходится писать в так называемом разделе объявлений. Еще там какие - то прозрачные области видимости имен, например если есть глобальная переменная X, то я не могу локально создать переменную с тем же именем, приходится придумывать какое - нибудь оргинальное название типа X2 smile .

Добавлено @ 19:10
Цитата(Oracle @ 12.2.2005, 19:06)
P.S то, что Oracle это не язык, я знаю
PL тогда уж smile .

Автор: <Spawn> 12.2.2005, 19:22
Oracle

Чего я тока еще не выучу:) В планах до конца учебы как минимум Perl, Java, C#, разобраться с .NET, ну и работа с тем что уже знаю, продвижение навыков в средах с которыми работаю smile. Разумеется, что я не буду в совершенстве знать все языки, которые собираюсь затронуть, мне это нужно для понимания назначения языков, их плюсов и минусов, для выбора идеальной среды разработки под конкрентый случай(да и вообще просто интересно smile ).

p.s. С Oracle безусловно прийдется сталкиваться и не раз:) Туда столько всего напичкано, что иногда даже не укладывается в голове:)
Добавлено @ 19:26
Цитата
Еще хочу сказать, что неудобно в Дельфи тем, что в какой - нибудь процедуре нельзя содавать переменные на лету, все приходится писать в так называемом разделе объявлений. Еще там какие - то прозрачные области видимости имен, например если есть глобальная переменная X, то я не могу локально создать переменную с тем же именем, приходится придумывать какое - нибудь оргинальное название типа X2  .


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

Цитата
А как же STL подобные структуры? В Дельфе нету?


Поподробнее пожалуйста. Какие структуры имеются ввиду?
Добавлено @ 19:29
Цитата
PL тогда уж.


Ну не только PL\SQL. В том же его SQL тоже не мало заморочек есть, к примеру правила оптимизации запроса, эффективность использования тех или иных функций в разных случаях, различные дополнения типа аналитических функций и т.д. и т.п..

Автор: S.A.P. 12.2.2005, 19:38
Цитата
Локальную переменную X создать можно, но она будет независма от глобальной X, т.е. изменение ее значения ни как не скажется на глобальной переменной.
это как? Разве так правильно?
Код

var X:integer
procedure a;
var X:integer;
begin
. . . .


Цитата
Поподробнее пожалуйста. Какие структуры имеются ввиду?
векторы, двузвязные списки, мапы наконец. Не велосипед же каждый раз изобратать smile .

Автор: <Spawn> 12.2.2005, 19:43
Цитата(Perchilla @ 12.2.2005, 21:38)
Цитата
Локальную переменную X создать можно, но она будет независма от глобальной X, т.е. изменение ее значения ни как не скажется на глобальной переменной.
это как? Разве так правильно?
Код

var X:integer
procedure a;
var X:integer;
begin
. . . .

Да, правильно:)

Цитата
Цитата
Поподробнее пожалуйста. Какие структуры имеются ввиду?
векторы, двузвязные списки, мапы наконец. Не велосипед же каждый раз изобратать smile .


Есть, но, наверное, не в таком количестве как в Си, хотя не берусь тут ни чего утверждать:) К примеру, TStack, TQueue, TList, TBucketList ...

Автор: S.A.P. 12.2.2005, 19:48
Цитата
К примеру, TStack, TQueue, TList, TBucketList ...
не понятно, как они без шаблонов юзаются. Что, для каждого итема память отдельно выделяется каждый раз? smile .

Автор: Дрон 12.2.2005, 20:36
<Spawn>
Цитата
Есть тут такое:) Называется, вроде, вариантные записи. Вот пример стандартной заиси-аналога union для Variant типа данных

Круто!
Я-то думал -- это чисто сишная фишка. Теперь буду знать smile
Добавлено @ 20:38
Я, в принципе, ничего не имею против Дельфи, но по-моему сам исходник получается более громоздким, чем в Сях. ИМХО Паскаль сам по себе ближе к Бейсику.

Автор: chipset 12.2.2005, 22:32
Цитата
Добавлено @ 09:38
Я, в принципе, ничего не имею против Дельфи, но по-моему сам исходник получается более громоздким, чем в Сях. ИМХО Паскаль сам по себе ближе к Бейсику.

Как раз Паскаль очень часто сравнивают именно с сями. И время создания Паскаля близко к времени создания Сей.

Автор: Дрон 13.2.2005, 03:57
chipset
Цитата(chipset @ 12.2.2005, 22:32)
Как раз Паскаль очень часто сравнивают именно с сями. И время создания Паскаля близко к времени создания Сей.

Я знаю, что любят сравнивать. Поэтому и сказал про Бейсик smile

Автор: ST_Falcon 13.12.2005, 23:17
GoodBoy
Цитата
Я тоже не сталкивался пока с задачей, которую невозможно было бы реализовать средствами Дельфи и требовалось бы непременное использование С++...


например программирование для Unix систем
давайте будем cgi скрипты на Delphi писать smile

Автор: stron 14.12.2005, 19:16
Насчёт запада:
Вроде Vit не жаловался на отсутствие работы, да её меньше, но она есть.
Я бы стал учить Java.
И уж точно не стал бы связываться с С++
Самый оплачиваемый язык - ABAP

Автор: ToshaCh 14.12.2005, 19:28
Цитата(stron @ 14.12.2005, 19:16)
И уж точно не стал бы связываться с С++

С чего это?

Я вот сам в своё время переходил с паскаля на С++. Во время перехода понял, что я сильно отупел за несколько лет работы с Делфёй. Вообще я сейчас сторонник разделения труда. Т.е. прикладной софт писать на С#/Java, а низкоуровневый код на чистом С, иногда на С++.

Автор: stron 15.12.2005, 12:10
Цитата(ToshaCh @ 14.12.2005, 20:28)
Цитата (stron @ 14.12.2005, 19:16)
И уж точно не стал бы связываться с С++
С чего это?

Сложность языка, не очень большая востребованность + уровень з/п на уровне остальных языков

Автор: ToshaCh 15.12.2005, 14:19
Цитата(stron @ 15.12.2005, 12:10)
ложность языка, не очень большая востребованность + уровень з/п на уровне остальных языков

Сложность языка согласен. А на счёт востребованности... В том-то и проблема, что только связка С/С++ сейчас и рулит. Применяется и там где надо и там где нет.

Автор: stron 15.12.2005, 18:30
У нас в городе сейчас рулит Java, потом идут .NET, далее Delphi и C/C++, это по кол-ву предложений,
самые высоко оплачиваемые джависты и сишники, далее с небольшим отставанием идёт .NET, потом Delphi

Автор: Дрон 15.12.2005, 18:37
Подтверждаю smile

Автор: DemoCode 15.12.2005, 19:55
Цитата
У нас в городе сейчас рулит Java, потом идут .NET, далее Delphi и C/C++, это по кол-ву предложений, далее самые высоко оплачиваемые джависты и сишники, далее с небольшим отставанием идёт .NET, потом Delphi


Это в больших городах. А вот в провинциальных городах, наоборот.
Я ни разу не встречал ни одного предложения по Java или .NET
Зато, почти все предложения - это PHP или Delphi, редко - Perl.
Си++ вроде бы тоже ни разу не встречал (точно не могу сказать).

Но складывается впечатление, что в крупных городах - Java и .NET, а в провинции - Delphi и PHP.

Ну а оплачиваемость у нас для всех примерно равна 400-800$ / мес. независимо от языка.

Автор: stron 15.12.2005, 20:57
Цитата(DemoCode @ 15.12.2005, 20:55)
Ну а оплачиваемость у нас для всех примерно равна 400-800$ / мес. независимо от языка.

уж не знаю, где у вас, но город городу рознь
400 и 800 - это довольно разная з/п.
Автор из Екатеринбурга, какая обстановка там я не знаю, наверное, процветают 1С-ники

Автор: DemoCode 15.12.2005, 21:01
Цитата
уж не знаю, где у вас, но город городу рознь
400 и 800 - это довольно разная з/п.
Автор из Екатеринбурга, какая обстановка там я не знаю, наверное, процветают 1С-ники


Я говорю про Архангельск. Города по численности населения примерно равны, поэтому думаю, что ситуация похожая. Про 400-800 я имею в виду, что зарплата не зависит от языка программирования, т.е. как дельфистом можно работать за 400-800, так и явошником за такую же зарплату.

О! 1С-ники и у нас процветают, только я их почему-то не учёл. Хотя их з/п обычно ниже, но спрос на них огромный.

Автор: stron 15.12.2005, 21:10
А аутсорсинговые компании есть? Там з/п должна быть повыше
Обычно программисты в неIT конторах не особо шикуют, т.к. считаются обслуживающим персоналом

Автор: DemoCode 16.12.2005, 14:58
Цитата(stron @ 15.12.2005, 22:10)
А аутсорсинговые компании есть? Там з/п должна быть повыше


Есть, но их совсем немного (может 1 или 2), и з/п там не на много выше.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)