1

Тема: Чому С досі існує??

Таке цікаве питання.
Уже вкотре не дає мені спокою. Всі С-подібні мови почниаються з С. Невже це настільки принципово. Я ніколи не підтримував подібного підходу. Майже кожна програма починається саме з вивчення процедурного програмування. Звичайно, без нього не мали б право на життя дюжина ооп-мов. Але вже й далі ооп людина давно пішла, а чомусь й досі існує такий стереотип. Я, наприклад, у свій час вивчав С++ по Лафоре. Там не те щоб натяку на С-тортури не було, навіть стиль написання схилявся до іронічного насміювання над "термосами"(хто читав, напевно зрозуміє :) ).
Не заперечуватиму той факт, що навчитися розмовляти неможливо раніше, ніж їсти, але тут інша ситуація.

До чого ж я? Як ви, панове, ставитеся до цієї думки. Чи ви змогли б досяти того, до чого ви дійшли зараз без С :) ?

2

Re: Чому С досі існує??

Ще в університеті (в результаті холівару, звісно ж) ми робили експеримент: людині, яка не знайома з програмуванням, показували програми на Хаскелі і на Джаві. Результати кожен із таборів трактував на свою користь, але зараз я можу сказати, що С-подібність не принципова.
Але в С є дуже багато дітей та інших внучатих племінників — практично всі мови, які широко застосовуються. А знання С дозволяє освоювати їх швидше.

3

Re: Чому С досі існує??

Що маєте на увазі під "освоювати"?
Вивчати? - Не погоджусь. Ні разу. Навіть навпаки, це сповільнює процес.
Краще розуміти? - Імовірно, саме так. С - додатковий ресурс для пізнання лише деяких тонкощів мови. Наголошую: деяких - тих, що стосуються успадкованих рис, а вивчати його усьо, так би мовити, не має сексу.

4

Re: Чому С досі існує??

DrSplash написав:

Що маєте на увазі під "освоювати"?
Вивчати? - Не погоджусь. Ні разу. Навіть навпаки, це сповільнює процес.
Краще розуміти? - Імовірно, саме так. С - додатковий ресурс для пізнання лише деяких тонкощів мови. Наголошую: деяких - тих, що стосуються успадкованих рис, а вивчати його усьо, так би мовити, не має сексу.

Ну от взявся сішник вчити джаваскрипт. Дивиться: так, є змінні, але типів не треба писати, арифметика та сама, if той самий, for той самий, while той самий, функції майже такі ж самі. От уже й освоїв більшу частину синтаксису і вже може щось написати. А потім він дивиться на Лісп і бачить, що з цим таки треба сидіти і розбиратись. І ні про яке написання програм сходу мова не йде.

5

Re: Чому С досі існує??

А я зараз використовую С :p Єдине, чтого справді не вистачає, так це мови часу компіляці, яка наявна навіть в FASM. Але якби воно існувло в С, то плюсів би не існувало  ;) Ну або вони були якоюсь бібліотекою.

6 Востаннє редагувалося koala (31.10.2014 20:41:38)

Re: Чому С досі існує??

0xDADA11C7 написав:

А я зараз використовую С :p Єдине, чтого справді не вистачає, так це мови часу компіляці, яка наявна навіть в FASM. Але якби воно існувло в С, то плюсів би не існувало  ;) Ну або вони були якоюсь бібліотекою.

Чим вам макроси (які #define) не воно?

7 Востаннє редагувалося DrSplash (31.10.2014 20:56:21)

Re: Чому С досі існує??

@quez, саме тому й виникло питання. На мою думку, більше часу треба приділяти цільовій мові. Тій, яку саме й вивчаєш. Дідівський метод найпростіший, найпоширеніший, та ж це не панацея. А от створити програму, яка була б гідною заміною - це шлях майбутнього освітньої логіки. Однак, надія є, адже навіть сьогодні серйозні спроби вражають результатом. Можливо років через 5-10 ця проблема зникне.

8

Re: Чому С досі існує??

На мою думку, більше часу треба приділяти цільовій мові.

Ну якщо можна сказати, що хтось буде писати на цій мові від випуску і до пенсії, тоді так. Але багато програмістів пишуть не на одній мові, змінюють їх і роблять інші неподобства. Тому починати з С краще.

Подякували: DrSplash1

9

Re: Чому С досі існує??

quez написав:

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

Вибір - то вже особиста справа кожного.

10 Востаннє редагувалося 0xDADA11C7 (02.11.2014 15:17:49)

Re: Чому С досі існує??

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

macro stSTDCALLx86 n, [params] 
{
  common
    local ..i
    ..i = 0x0
    n equ 0x0
  forward
    ..i = ..i + 0x4
    n#.#params = ..i
}

macro stCCALLx86 n, [params] 
{
  common
    local ..i
    ..i = 0x0
    n equ 0x0
  reverse
    ..i = ..i + 0x4
    n#.#params = ..i
}

stSTDCALLx86 stHttpSendRequest, hRequest, lpszHeaders, dwHeaderLength, lpOptional, dwOptionalLen

Ця структура потрібна для зручного доступу до пареметрів, що знаходяться в стеку. Чому вбудовані макроси і засоби не памагають? Бо я звертаюся я до чужого стеку.
Аналог в Сі для stdcall викликів буде такий

struct stHttpSendRequest
{
  DWORD hRequest;
  DWORD lpszHeaders;
  DWORD dwHeaderLength;
  DWORD lpOptional;
  DWORD dwOptionalLen;
}

Аналог в Сі для ccall викликів буде такий

struct stHttpSendRequest
{
  DWORD dwOptionalLen;
  DWORD lpOptional;
  DWORD dwHeaderLength;
  DWORD lpszHeaders;
  DWORD hRequest;
}

Аналог на FASM`s для ccall викликів (Звичайно, що HttpSendRequest використовує stdcall, але це для прикладу)

stCCALLx86 stHttpSendRequest, hRequest, lpszHeaders, dwHeaderLength, lpOptional, dwOptionalLen

11

Re: Чому С досі існує??

https://github.com/PhilippeSigaud/D-templates-tutorial

Подякували: 0xDADA11C71

12 Востаннє редагувалося 0xDADA11C7 (01.11.2014 01:08:09)

Re: Чому С досі існує??

Ді мені в все одно доведеться вивчити, але це не врішення моїх проблем. С++11, D, HLA мають свої мови часу компіляції, але не те. От якби в геймдеві, а не в написанні шеллкодів - тоді так. Про Ді я дізнвся від кетмара - http://lj.rossia.org/users/ketmar/

13

Re: Чому С досі існує??

А чому він почав існувати? Як бути з уже написаним?